Joe*_*eyC 5 ruby parameters arguments require
是否可以要求带参数/参数的文件?
例如
resource.rb有
mode = ARGV.first
if mode == "prod"
#use prod db
else
#use test db
end
Run Code Online (Sandbox Code Playgroud)
而main.rb需要它与params类似的东西
require_relative './resource.rb prod'
Run Code Online (Sandbox Code Playgroud)
如果这是不可能或不好的做法,请告诉我.我想我可以使用版本控制在测试和prod之间切换,但它似乎有点迟钝.
(prod和测试仅用于区分.这是一个非常轻量级的项目,如果它有任何区别,则不是商业:))
在Windows XP上使用Ruby 1.9.3谢谢.
我很惊讶,这已经没有答案了.只有使用宝石和使用ruby参数但不能同时使用两者的东西.
您不能通过require执行此操作,但您可以设置环境变量:
在main.rb:
ENV["mode"] = ARGV.first
require_relative './resource'
Run Code Online (Sandbox Code Playgroud)
在./resource.rb:
mode = ENV.fetch("mode")
if mode == "prod"
#use prod db
else
#use test db
end
Run Code Online (Sandbox Code Playgroud)
使用环境变量进行配置的优点是,您可以跨多个文件使用相同的逻辑.这是Heroku的做事方式.
不,你不能传递参数require.
我建议做这样的事情:
def use_mode(mode)
# your if statements
end
Run Code Online (Sandbox Code Playgroud)
然后
require 'file'
use_mode :development
Run Code Online (Sandbox Code Playgroud)
并将其包装在类/模块中以获得更清晰的代码:)
| 归档时间: |
|
| 查看次数: |
3064 次 |
| 最近记录: |