Ruby 如何在生产中不需要开发所需的某些gem/代码行
我不是在用Rails写作。它只是红宝石。 但是我有一个开发环境,它的文件中有自己的开发组 但我不会在Iron.io的制作中使用它们 特别是,我使用“log_buddy”,并且在整个过程中有许多Ruby 如何在生产中不需要开发所需的某些gem/代码行,ruby,environment-variables,development-environment,ruby-dotenv,Ruby,Environment Variables,Development Environment,Ruby Dotenv,我不是在用Rails写作。它只是红宝石。 但是我有一个开发环境,它的文件中有自己的开发组 但我不会在Iron.io的制作中使用它们 特别是,我使用“log_buddy”,并且在整个过程中有许多d{var}语句 我使用了pry,它有require-pry和require-debug语句 当代码在生产中运行时,这些语句在pry情况下会产生错误,在log\u buddy情况下会产生重复记录 如何区分这两种环境 我已经读过dotenv和其他一些gem,但不太明白它在我的场景中是如何工作的。如果你刚刚为d
d{var}
语句
我使用了pry
,它有require-pry
和require-debug
语句
当代码在生产中运行时,这些语句在pry
情况下会产生错误,在log\u buddy
情况下会产生重复记录
如何区分这两种环境
我已经读过
dotenv
和其他一些gem,但不太明白它在我的场景中是如何工作的。如果你刚刚为dev设计了yes
/no
场景,那么dotenv
家族就太过了。我将采用以下方法满足周围的开发人员需求:
if ENV['DEV']
require 'pry'
...
end
然后按以下方式运行开发场景:
DEV=true bundle exec ...
由于prod服务器上未定义DEV
env变量,因此其中不会包含任何内容
log\u buddy
的初始化可能如下所示:
LogBuddy.init(ENV['DEV'] ? {:logger => Logger.new('my_log.log')} : nil)
不使用Rails并不妨碍您使用: 然后,您必须以您认为合理的任何方式获取环境名称:
bundler_env = whatever # could be ENV['ENVIRONMENT'], for instance
bundler_env ||= :production # Specify a fallback if none specified
完成后,需要宝石:
Bundler.require(:default, bundler_env)
这将如何处理依赖gems的代码行,比如log_buddy的
d
?如果我可以为log\u buddy设置环境变量,那么当您偶尔想要禁用LogBuddy(但不想删除所有调试语句)时,它可能会停止输出,您可以将:disabled选项传递到init的options散列()除了debug
级别的日志记录之外,代码中实际上不应该有任何调试语句。这就是为什么rubocop
抱怨它看到的任何绑定。pry
它在生产时如何禁用该选项?谢谢k@Angela设置环境名称的示例就在上面。在上面使用if
。谢谢,Init做什么?如果没有开发环境,我希望它通过以下命令:LogBuddy.init:disabled=>true
我是否可以这样运行web应用程序:DEV=true bundle exec shotgun-o 0.0.0.web…rb
(从bundle
开始的所有内容都是我当前在开发模式下运行应用程序的方式。
Bundler.require(:default, bundler_env)