新手问题 [已明白] 为什么 gemfile 里 Capistrano 要放在 group: :development 里?

chairy11 · 2014年11月19日 · 最后由 chairy11 回复于 2014年11月19日 · 1761 次阅读

问题

正在学习用 Capistrano,我目前方案使用的是:

group :development do
  gem 'capistrano', '~> 3.2.1'
  gem 'capistrano-bundler', '~> 1.1.3'
  gem 'capistrano-rails', '~> 1.1.2'
  gem 'capistrano-passenger', '~> 0.0.1'
  gem 'capistrano-rvm', '~> 0.1.2'
end

可是我没想明白,既然是部署,大部分情况是要在 production 中使用罗?为什么要 group :development 呢? 另外看到有些教程写的是

group :development do
  gem 'capistrano-rails',   '~> 1.1', require: false
  gem 'capistrano-bundler', '~> 1.1', require: false
end

那个 require: false 又是什么的呢?

另外,我平时习惯用最新的 gem,没事就 bundle update 一下,可是我一看我之前没有指定版本,gemfile.lock 竟然显示的是 capistrano (2.15.5),为什么呢?不应该是最新的 3.2.1 才对吗?

请教各位大神呀……

解答:

见二楼 @flowerwrong 的解答……

谢谢各位:)

require: false 只 install 不 require capistrano 只是本地执行需要,生产环境本来就不需要

问题 1:你的本地工作环境中就可以,至于development还是test,或者tools,无所谓,他只是一个cli程序, 在 3 里面,cap production deploy默认就是在railsproduction环境下执行命令。

问题 2: require: false就是不加载进入 rails 内部,也就是你不能在 rails 里面的文件里面直接用他或者没必要用它

问题 3:不知道了。

capistrano (3.2.1)
  i18n
  rake (>= 10.0.0)
  sshkit (~> 1.3)
capistrano-bundler (1.1.3)
  capistrano (~> 3.1)
  sshkit (~> 1.2)
capistrano-rails (1.1.2)
  capistrano (~> 3.1)
  capistrano-bundler (~> 1.1)
capistrano-rvm (0.1.2)
  capistrano (~> 3.0)
  sshkit (~> 1.2)
需要 登录 后方可回复, 如果你还没有账号请 注册新账号