Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在生产中不需要开发所需的某些gem/代码行_Ruby_Environment Variables_Development Environment_Ruby Dotenv - Fatal编程技术网

Ruby 如何在生产中不需要开发所需的某些gem/代码行

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

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

但是我有一个开发环境,它的文件中有自己的开发组

但我不会在Iron.io的制作中使用它们

特别是,我使用“log_buddy”,并且在整个过程中有许多
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)