我正在尝试运行从Github上取下的应用程序。
我已运行bundle install
从Gemfile
安装所需的宝石。但是,在运行应用程序时,错误消息告诉我安装的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版本。
答案 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'
希望上述内容适合您。