1

我不是在 Rails 中写作。它只是红宝石。

但是我有一个开发环境,它在 Gemfile 中有自己的开发组。

但我不会在 Iron.io 的生产中使用它们。

特别是,我使用“log_buddy”并且d {var}自始至终有很多语句。

我使用prywhich has a require pryandrequire-debug声明。

这些语句会在代码在生产环境中运行pry的情况下产生错误,并在日志记录重复的情况下产生。log_buddy

如何区分这两种环境?

我已经阅读dotenv了其他一些宝石,但不太了解它在我的场景中是如何工作的。

4

2 回答 2

1

如果您有开发人员的yes/no场景,那么dotenv家庭就是一种矫枉过正。我会与周围的开发要求一起去:

if ENV['DEV']
  require 'pry'
  ...
end

然后将开发方案运行为:

DEV=true bundle exec ...

由于DEVenv 变量未在您的产品服务器上定义,因此不会包含任何内容。

初始化log_buddy可能如下所示:

LogBuddy.init(ENV['DEV'] ? {:logger => Logger.new('my_log.log')} : nil)
于 2015-05-17T08:12:25.133 回答
1

不使用 Rails 不会阻止您使用Bundler 组

# These gems are in the :default group
gem 'nokogiri'
gem 'sinatra'

gem 'wirble', :group => :development

group :test do
  gem 'faker'
  gem 'rspec'
end

group :test, :development do
  gem 'capybara'
  gem 'rspec-rails'
end

gem 'cucumber', :group => [:cucumber, :test]

然后你必须以任何你认为合理的方式获取环境名称:

bundler_env = whatever # could be ENV['ENVIRONMENT'], for instance
bundler_env ||= :production # Specify a fallback if none specified

完成后,需要宝石:

Bundler.require(:default, bundler_env)
于 2015-05-17T10:29:27.497 回答