我创建了一个新的、干净的 Rails 项目,但尝试在那里和生成步骤中安装设计:
rails g devise:install
我收到一堆关于已安装但未构建的 gem 的警告,以及由于据称不存在而出现的错误消息:
忽略 bcrypt-3.1.18 因为它的扩展没有构建。试试: gem pristine bcrypt --version 3.1.18
忽略 bindex-0.8.1 因为它的扩展没有构建。试试: gem pristine bindex --version 0.8.1
忽略 bootsnap-1.13.0,因为它的扩展没有构建。尝试: gem pristine bootsnap --version 1.13.0
忽略 debug-1.6.2,因为它的扩展没有构建。试试: gem pristine debug --version 1.6.2
忽略 ffi-1.15.5,因为它的扩展没有构建。试试: gem pristine ffi --version 1.15.5
忽略 msgpack-1.5.6,因为它的扩展没有构建。试试: gem pristine msgpack --version 1.5.6
忽略 puma-5.6.5,因为它的扩展没有构建。试试:gem pristine puma --version 5.6.5
忽略 sqlite3-1.4.4,因为它的扩展没有构建。试试: gem pristine sqlite3 --version 1.4.4
忽略 strscan-3.0.4 因为它的扩展没有构建。试试: gem pristine strscan --version 3.0.4
忽略 bcrypt-3.1.18 因为它的扩展没有构建。试试: gem pristine bcrypt --version 3.1.18
忽略 bindex-0.8.1 因为它的扩展没有构建。试试: gem pristine bindex --version 0.8.1
忽略 bootsnap-1.13.0,因为它的扩展没有构建。尝试: gem pristine bootsnap --version 1.13.0
忽略 debug-1.6.2,因为它的扩展没有构建。试试: gem pristine debug --version 1.6.2
忽略 ffi-1.15.5,因为它的扩展没有构建。试试: gem pristine ffi --version 1.15.5
忽略 msgpack-1.5.6,因为它的扩展没有构建。试试: gem pristine msgpack --version 1.5.6
忽略 puma-5.6.5,因为它的扩展没有构建。试试:gem pristine puma --version 5.6.5
忽略 sqlite3-1.4.4,因为它的扩展没有构建。试试: gem pristine sqlite3 --version 1.4.4
忽略 strscan-3.0.4 因为它的扩展没有构建。试试: gem pristine strscan --version 3.0.4
找不到 sqlite3-1.4.4、puma-5.6.5、bootsnap-1.13.0、debug-1.6.2、msgpack-1.5.6、ffi-1.15.5、bindex-0.8.1、bcrypt-3.1.18 , strscan-3.0.4 在任何来源
运行
bundle install
以安装缺少的 gem。
我正在尝试修复:
gem pristine --all
发誓缺乏权利:
错误:执行 gem 时 ... (Gem::FilePermissionError)
您没有 /usr/share/gems 目录的写入权限。
我以超级用户身份重复:
sudo gem pristine --all
该命令有效,但无济于事。使用推荐的命令时也是如此,例如:
gem pristine bcrypt --version 3.1.18
它们仅代表超级用户工作,没有任何作用。试过:
sudo rails g devise:install
但是看起来 Rails 是在本地安装的,并且无法从 root 访问:
sudo:rails:找不到命令
可能是什么问题以及如何解决?
运行命令之前
您需要设置安装gem的路径:
如果不这样做,那么一些 gem 会被全局设置,这会在执行看不到它们的生成器脚本时导致问题。
在安装过程中会显示一个警告,但由于它在一般文本画布的背景下并不突出,很容易错过它。
创建新项目时,
rails new projectname
bundle install
会自动使用,但有时会要求您输入管理员密码。如果发生这种情况,请不要输入密码,使用 Ctrl + C 中断脚本执行,转到已创建项目的目录,并使用上面的命令设置安装 gems 的路径。然后bundle install
手动启动。如果您已正确配置所有内容,则安装脚本将成功完成工作而无需密码。