【问题标题】:Is there a difference between using RVM local gemset and using Bundle exec?使用 RVM 本地 gemset 和使用 Bundle exec 之间有区别吗?
【发布时间】:2016-03-07 13:54:59
【问题描述】:

ruby gem 集存在根本问题,其中像 rake xxxx 这样的命令可能会产生错误,因为命令可能使用全局版本的 rake,而您的 gemfile 需要非常特定的版本。

我知道缓解这种情况的两种方法。

  1. 在 rake 和 rails 命令前使用 bundle exec。例如bundle exec rake db:migrate 在前面添加这个确保命令相对于当前包执行,这意味着当你运行bundle install 时创建的包。

  2. 使用 RVM。使用 RVM 创建本地 gemset 的方法鲜为人知。首先,在这种情况下为您的新应用程序创建目录mkdir myappcd myapp,然后运行rvm use ruby-2.3.0@myapp --ruby-version --create 以创建其中没有任何内容的本地 gem 集。现在您可以运行gem install railsrails new . 在您所在的文件夹中创建带有专用gem 环境的rails myapp。

每次你 cd 到 myapp 目录时,额外的 RVM 都会自动切换到正确的 gemset。

据我了解,这两种方法都有效,但是否有任何已知问题为什么您不使用上述方法之一?

【问题讨论】:

    标签: ruby rvm bundler


    【解决方案1】:

    如果您像我一样是 RVM 粉丝,我会为我开始的每个 Rails 项目创建自己的 gemset。这将使我更容易只使用rakerails 命令,而无需每次都指定bundle exec

    在分享您的代码时请记住,一些开发人员可能正在使用 rbenv 或者可能根本不使用 ruby​​ 版本管理器。确保每个人都满意并使用相同版本的 ruby​​ 的一种方法是在项目目录中提供两个附加文件(.ruby-version.ruby-gemset)并在项目中跟踪它们。

    .ruby-version 文件将包含您正在使用的 ruby​​ 版本,例如 2.4.1。请注意,这与 RVM 和 rbenv 兼容,并将切换到正确的 ruby​​ 版本。

    .ruby-gemset 文件仅由 RVM 识别;因此,切换到您为项目设置的正确 gemset。

    这将使您的项目与使用 rbenv 的开发人员兼容,同时仍然让我们这些使用 RVM 的人高兴:)

    考虑到所有这些因素,现在您应该不再关心人们是否使用bundle exec

    【讨论】:

      【解决方案2】:

      不使用 (2) 的一个原因:如果其他人想要使用您的代码,他们将不得不自己复制所有这些,而不是只记得输入 bundle exec。他们可能以前从未见过 (2),所以这可能很重要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-04
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 2012-03-07
        • 2013-06-20
        • 1970-01-01
        相关资源
        最近更新 更多