gpt4 book ai didi

ruby-on-rails - Rails 3's "bundle install” 非常快(需要 1 秒),但之后没有 Rails?(使用 rvm)

转载 作者:行者123 更新时间:2023-12-04 03:35:03 25 4
gpt4 key购买 nike

我正在使用 rvm,执行以下操作:

rvm install ree    <--- (Ruby Enterprise Edition), or this can be 1.8.7 or 1.9.2
rvm ree
rvm gemset create 'proj'
cd path/to/proj
bundle install

所以那个项目中的 Gemfile 说:
gem 'rails', '3.0.0'

bundle install super 快,报告
Using rails (3.0.0) 

但在那之后当我输入
$ rails -v
/Library/Ruby/Site/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError)
from /Library/Ruby/Site/1.8/rubygems.rb:214:in `activate'
from /Library/Ruby/Site/1.8/rubygems.rb:1082:in `gem'
from /usr/bin/rails:18

$ which rails
/usr/bin/rails

所以 bundle install不将 rails 安装为 gem 吗?
但如果我输入 script/rails -v它显示它是 3.0.0

最佳答案

这是对的。 bundle install不会将 Rails 安装为传统意义上的 gem。现在解释原因。

当 Bundler 运行安装时,它会将 gems 安装到一个目录:~/.bundle/<type-of-ruby>/<version>/gems .这与将它们安装到系统路径的正常方式不同。当 gem 安装在系统路径上时,可执行文件可用,因为该目录位于加载路径中。现在这是一个 事情,因为每个 gem 只能有一个可执行文件。您是否安装了 SomeGem v2 但想使用 SomeGem v1 的生成器?太糟糕了。

Bundler 通过将它们安装到上述位置来解决这个问题,并且只需要它需要的特定版本的 gems(在 Gemfile 中指定。通过简单地运行 rails ,您正在尝试运行系统可执行文件(如一个通过做 gem install rails 提供)而不是 Bundler 一个(通过为 Rails 项目做 bundle install 提供)。

要运行 Bundler 安装的程序,您必须像这样运行它 bundle exec rails在包含 Gemfile 的目录中指定任何版本的 Rails。 Bundler 将加载特定版本的 Rails,您现在应该能够并行运行它们,唯一的权衡是 bundle exec命令的前缀。

我个人将其别名为 be在我看来,在某些命令之前加上两个字符是避免第七圈 gem 冲突 hell 的一个值得权衡的方法。

关于ruby-on-rails - Rails 3's "bundle install” 非常快(需要 1 秒),但之后没有 Rails?(使用 rvm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com