Rails Gemfile:在开发中使用一行,在生产中使用另一行

时间:2013-12-30 02:09:48

标签: ruby-on-rails ruby-on-rails-3 heroku rubygems gem

我们在生产中使用Heroku运行Unicorn,但在本地机器上使用Webrick进行开发。我们无法在本地计算机上安装Unicorn。

是否可以让Rails仅在生产中加载Unicorn gem?现在,我们的解决方案是在本地运行应用程序时注释掉Unicorn gem,并在推送到Heroku时取消注释gem。

我们正在使用Rails 3.2.12。

的Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.2.12'
gem 'jquery-rails'


# # =========================================================================================
# 
# #=========================================================================================
gem 'mongo'
gem 'mongo_mapper'
gem 'plucky'
gem 'bson_ext'
gem 'bson'
gem 'newrelic_rpm'
gem 'rpm_contrib'


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

谢谢!

1 个答案:

答案 0 :(得分:2)

  

是否可以让Rails仅在生产中加载Unicorn gem?   现在,我们的解决方案是在运行时注释掉Unicorn gem   当地应用程序,并在推送到Heroku时取消注释宝石。

是的,可以通过Gemfile中的群组使用。仅更新Gemfileunicornproduction宝石的# Gemfile group :production do gem 'unicorn' end

WEBrick

由于development是rails应用的默认网络服务器,因此您无需为bundle install组指定任何内容。

Gemfile更新后运行production仍会安装生产宝石。这绝对是一件好事,因为您希望确保您计划在生产中使用的宝石在项目的开发阶段与您的应用程序一起正常工作。

要跳过bundle install --without production 群组宝石的安装:

--without production

关于bundle install选项需要注意的一点是,对bundle updateBUNDLE_WITHOUT: production的后续调用也将跳过安装和更新生产宝石。要禁用此功能,您需要从app_root/.bundle/config

中删除行# app_root/.bundle/config BUNDLE_WITHOUT: production
{{1}}