【问题标题】:Rails Gemfile: use one line in development, another in productionRails Gemfile:在开发中使用一条线,在生产中使用另一条线
【发布时间】:2014-01-16 21:59:26
【问题描述】:

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

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

我们正在使用 Rails 3.2.12。

宝石文件:

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

谢谢!

【问题讨论】:

  • 只要您的 Gemfile 看起来正确并且您的捆绑正确,Unicorn 也应该在本地可用。你能检查一下 Unicorn 是否在 Gemfile 中的任何组下吗?
  • @membLoper,用我们的 Gemfile 更新
  • 我们不能使用Unicorn的原因是因为我们的开发机器现在是Windows机器,而Unicorn不能在Windows上运行。

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


【解决方案1】:

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

是的,可以通过使用Gemfile 中的组来实现。仅在 production 中更新您的 Gemfile unicorn gem,如下所示:

# Gemfile
group :production do 
  gem 'unicorn'
end

由于WEBrick 是rails 应用程序的默认Web 服务器,您无需为development 组指定任何内容。

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

跳过production group gems 的安装:

bundle install --without production

关于--without production 选项需要注意的一点是,随后对bundle installbundle update 的调用也将跳过安装和更新生产gem。要禁用此功能,您需要从app_root/.bundle/config 中删除行BUNDLE_WITHOUT: production

# app_root/.bundle/config

BUNDLE_WITHOUT: production

【讨论】:

  • 嗯,该组似乎没有工作。当我们在开发中运行“rails s”时,它会显示一个关于找不到独角兽 gem 的错误。还有什么?
  • 在您的GemfileGemfile.lock 中搜索对独角兽的引用。您可能还需要先执行bundle clean --force,然后再执行bundle install --without production。试试这些,它们可能会有所帮助!
  • 还是不行。这适用于 rails 3.2.12 吗?
  • @Crashalot,抱歉回复晚了。想让您知道这是在 Rails 3.2.16 中测试的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 2016-06-07
相关资源
最近更新 更多