dmu*_*muk 10 ruby-on-rails github ruby-on-rails-3
我正在尝试运行一个从Github上取下的应用程序.
我已经开始bundle install从中安装所需的宝石了Gemfile.但是,在运行应用程序时,一条错误消息告诉我安装的gem是错误的版本.
在检查时Gemfile.lock我注意到版本比安装的宝石旧.(即我安装了更新版本的宝石,应用程序需要较旧的宝石.)
有没有根据Gemfile.lock文件中描述的版本快速安装所有gem?或者有一种方法可以忽略该文件吗?
的Gemfile:
source 'http://rubygems.org'
gem 'rails', "3.0.9"
gem "sass"
..
Run Code Online (Sandbox Code Playgroud)
Gemfile.lock的:
sass (3.1.1)
..
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,即使安装了sass,该应用程序也特别需要3.1.1版本.
pru*_*wan 10
使用有效Gemfile.lock文件,bundle install单独应该就足够了,除非某些特定的宝石版本已被拉出.在这种情况下,您需要寻找目前仍然可用的替代宝石版本(通常bundle update name_of_yanked_gem就足够了).
关于sass 3.1.1,并不是说应用程序需要特定版本,而是可能Gemfile.lock是上次生成/更新时可用的最新版本,给定了指定的整体版本约束Gemfile.正如您所列出的那样,没有为sass自己指定版本范围,但是如果其他gems具有sass依赖关系,则可能会施加进一步的约束.
直接忽略Gemfile.lock不是一个好主意,因为在正常情况下,它将指定最后已知仍可用于应用程序的gem版本.
小智 7
试试这个 ..
bundle install --deployment
Run Code Online (Sandbox Code Playgroud)
使用上面的部署选项,bundle然后从Gemfile.lock读取.
更重要的是,gems安装到目录vendor/bundle,bundle目录是自动创建的.
此外,新目录.bundle直接在rails根目录下创建,并有一个名为config的文件,其内容如下...
BUNDLE_FROZEN: '1'
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
Run Code Online (Sandbox Code Playgroud)
希望以上对你有用.
| 归档时间: |
|
| 查看次数: |
13779 次 |
| 最近记录: |