是否可以使用 rbenv 使用多个版本的导轨(例如 2.3 和 3.1)?使用 rvm 中的 gemsets 很容易,但我想知道现在我已经切换到 rbenv 最好的方法是什么(另外,我正在寻找一种没有 rbenv-gemset 的方法)。
2 回答
不确定您是否对此有答案,但我想我会提供我所做的并且它似乎有效。
因此,一旦安装了 rbenv,并使用它来安装特定的 ruby 版本,就可以为该 ruby 安装多个版本的 rails。
步骤 1. 为每个 ruby 版本安装你想要的任何版本的 rails
% RBENV_VERSION=1.9.2-p290 rbenv exec gem install rails --version 3.0.11
通过在命令行中使用“RBENV_VERSION=1.9.2-p290”前缀,您可以指定应该关注哪个 ruby rbenv。
然后使用“rbenv exec”命令,您可以安装rails。只需使用示例中的版本标志来指定您想要的版本。不确定您是否可以一次安装多个版本,但我只是根据需要多次运行此命令来安装我想要的每个版本。
注意:这一切都将在您的 rbenv 目录中进行管理,因此它非常安全且包含在内。
步骤 2. 通过指定所需的 rails 版本来构建一个新的 rails 项目。
% RBENV_VERSION=1.9.2-p290 rbenv exec rails _3.0.11_ new my_project
STEP 3. 不要忘记进入该项目并设置本地 rbenv ruby 版本。
% cd my_project
% rbenv local 1.9.2-p290
现在,如果您想删除此项目,只需照常删除即可。
如果您想从 rbenv gems 中删除/管理 rails 版本,您可以使用常规 gem 命令,只需在命令行前加上:
% RBENV_VERSION=1.9.2-p290 rbenv exec gem {some command}
当然,您可以很容易地删除在 rbenv 中管理的完整 ruby 版本及其所有 shims 等。我喜欢自给自足的一切。
希望这可以帮助。
作为参考,这是至少其中一些内容的一个很好的演练:
有一个名为rbenv-gemset的 rbenv 插件,它的行为应该与 -command 类似,rvm gemset
但由于 rbenv 从未打算以这种方式工作,所以我没有尝试过。
正如 Nathan 在其他答案之一的评论中所建议的那样,我通常使用 Bundler 管理 Rails 版本。我用我想要的 Rails 版本创建一个 Gemfile,运行bundle install
,创建 Rails 应用程序,让它替换 Gemfile 并让 Bundler 接管:
mkdir my-rails-app
cd my-rails-app
echo "source 'https://rubygems.org'" > Gemfile
echo "gem 'rails', '3.2.17'" >> Gemfile
bundle install
bundle exec rails new . --force --skip-bundle
bundle update
如果你想了解更多细节,我在我的博客上写了一篇关于它的文章。
希望能帮助到你!