如何从Gemfile.lock文件安装gem?

时间:2012-08-31 12:42:34

标签: ruby-on-rails ruby-on-rails-3 github

我正在尝试运行从Github上取下的应用程序。

我已运行bundle installGemfile安装所需的宝石。但是,在运行应用程序时,错误消息告诉我安装的gem是错误的版本。

在检查Gemfile.lock时,我注意到版本比安装的宝石旧。 (即我安装了更新版本的宝石,应用程序需要较旧的宝石。)

根据Gemfile.lock文件中描述的版本,是否有快速安装所有gem的方法?或者有一种忽略该文件的方法吗?

的Gemfile:

   source 'http://rubygems.org'
   gem 'rails', "3.0.9"
   gem "sass"
   ..

Gemfile.lock的:

 sass (3.1.1)
 ..

在上面的示例中,即使安装了sass,该应用程序也特别需要3.1.1版本。

3 个答案:

答案 0 :(得分:10)

使用有效的Gemfile.lock文件,仅bundle install就足够了,除非某些特定的宝石版本已经被拉扯。在这种情况下,您需要寻找目前仍然可用的替代宝石版本(通常bundle update name_of_yanked_gem就足够了。)

关于sass 3.1.1,并不是说应用程序需要特定版本,而是在最后一次生成/更新Gemfile.lock的情况下可能是最新版本Gemfile中指定的约束。正如您所列出的那样,没有为sass本身指定版本范围,但如果其他宝石有sass作为依赖项,则可能会施加更多限制。

Outright忽略Gemfile.lock并不是一个好主意,因为在正常情况下,它将指定上次已知仍可在应用程序中使用的gem版本。

答案 1 :(得分:7)

确保您使用bundle execute rails server

运行网络服务器

答案 2 :(得分:5)

试试这个..

bundle install --deployment

使用上面的部署选项,bundle然后从Gemfile.lock读取。

此外,宝石已安装到目录供应商/捆绑包,捆绑目录为自动创建

此外,新目录.bundle直接在rails根目录下创建,并且有一个名为config的文件,其内容如下...

BUNDLE_FROZEN: '1'
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'

希望上述内容适合您。

相关问题