在我的Gemfile我指定基于RAILS_ENV一个Git仓库使用哪一个分支。 然而,当Capistrano的部署,它运行的bundle install
命令-并且因为它是通过shell中运行,适当的环境(分段)未设置。 它默认为发展和给我的错误,指出有Gemfile.lock的之间的不匹配,并安装了什么。
您正在试图改变你的Gemfile后,在部署模式下安装。 运行
bundle install
其他地方,并添加更新Gemfile.lock的版本控制。你已经加入到Gemfile文件:*资料来源:git@bitbucket.org:MyRepository /经理,engine.git(在开发)
您已经从Gemfile中删除:*资料来源:git@bitbucket.org:MyRepository /经理,engine.git(在主机)
从*经理:你在Gemfile中改变
git@bitbucket.org:MyRepository/manager-engine.git (at develop)
,以no specified source
的Gemfile:
RAILS_ENV = ENV['RAILS_ENV'] || 'development'
gem 'manager', git: "git@bitbucket.org:MyRepository/manager-engine.git", branch: "#{ [:production, :staging].include?(RAILS_ENV.to_sym) ? :master : :develop }"
即使用“开发”分支,如果轨道环境以外的任何其他“生产”或“分期”。
部署/ staging.rb:
set :branch, :master
set :keep_releases, 2
set :stage, :staging
set :rails_env, 'staging'
set :bundle_without, [:development, :test]
set :deploy_to, '/home/useraccount/rails_deployments/staging.www'
server 'localhost', user: 'useraccount', roles: %w{web app db}
所以是最简洁:
在常规的SSH终端,安装适当的环境下库宝石,我不得不发出RAILS_ENV=staging bundle install
。 否则,只是运行bundle install
安装来自开发分支库。 由于Capistrano的只是运行bundle install
,并且不包括RAILS_ENV
,发生此问题。 但不Capistrano的设置:RAILS_ENV,或者是不是一个真正的系统环境变量?