如何在生产中不需要我在开发中需要的某些 gems/lines 代码
how to not require certain gems/lines of code in production that I need in development
我不是在写Rails。就是 ruby.
但我有一个开发环境,在 Gemfile 中有自己的开发组。
但我没有在 Iron.io 的生产环境中使用它们。
特别是,我使用 "log_buddy" 并且在整个过程中有很多 d {var}
语句。
我使用 pry
,它有一个 require pry
和 require-debug
语句。
当代码在生产中运行时,这些语句在 pry
的情况下会产生错误,而在 log_buddy
的情况下会产生重复日志记录。
如何区分这两种环境?
我已经阅读了有关 dotenv
和其他一些 gem 的内容,但不太了解它在我的场景中如何工作。
如果您只有 yes
/no
开发方案,dotenv
系列就有点矫枉过正了。我会满足周围的开发要求:
if ENV['DEV']
require 'pry'
...
end
然后 运行 开发方案为:
DEV=true bundle exec ...
由于 DEV
env 变量未在您的产品服务器上定义,因此不会包含任何内容。
log_buddy
的初始化可能如下所示:
LogBuddy.init(ENV['DEV'] ? {:logger => Logger.new('my_log.log')} : nil)
不使用 Rails 不会阻止您使用 Bundler groups:
# 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)
我不是在写Rails。就是 ruby.
但我有一个开发环境,在 Gemfile 中有自己的开发组。
但我没有在 Iron.io 的生产环境中使用它们。
特别是,我使用 "log_buddy" 并且在整个过程中有很多 d {var}
语句。
我使用 pry
,它有一个 require pry
和 require-debug
语句。
当代码在生产中运行时,这些语句在 pry
的情况下会产生错误,而在 log_buddy
的情况下会产生重复日志记录。
如何区分这两种环境?
我已经阅读了有关 dotenv
和其他一些 gem 的内容,但不太了解它在我的场景中如何工作。
如果您只有 yes
/no
开发方案,dotenv
系列就有点矫枉过正了。我会满足周围的开发要求:
if ENV['DEV']
require 'pry'
...
end
然后 运行 开发方案为:
DEV=true bundle exec ...
由于 DEV
env 变量未在您的产品服务器上定义,因此不会包含任何内容。
log_buddy
的初始化可能如下所示:
LogBuddy.init(ENV['DEV'] ? {:logger => Logger.new('my_log.log')} : nil)
不使用 Rails 不会阻止您使用 Bundler groups:
# 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)