ruby - 使用参数与 ruby​​ require

标签 ruby parameters arguments require

是否可以要求带有参数的文件?

例如

resource.rb 有

mode = ARGV.first

if mode == "prod"
  #use prod db
else
  #use test db
end

并且 main.rb 需要它带有类似 params 的东西

require_relative './resource.rb prod'

如果这不可能或不好的做法,请告诉我。我想我可以使用版本控制在测试和生产之间切换,但它似乎有点迟钝。

(prod 和 test 仅用于区分。这是一个非常轻量级的项目,如果它有任何区别就不是商业的:))

感谢在 Windows XP 上使用 Ruby 1.9.3。

令我惊讶的是,目前还没有任何答案。只有关于使用 gems 和使用带参数的 ruby​​ 的内容,但不能同时使用。

最佳答案

你不能通过要求来做到这一点,但你可以设置一个环境变量:

main.rb中:

ENV["mode"] = ARGV.first
require_relative './resource'

./resource.rb中:

mode = ENV.fetch("mode")

if mode == "prod"
  #use prod db
else
  #use test db
end

使用环境变量进行配置的好处是您可以在多个文件中拥有相同的逻辑。这就是 Heroku 的做事方式。

参见 Heroku's 12 factor app .

关于ruby - 使用参数与 ruby​​ require,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14051547/

相关文章:

ruby-on-rails - 如何从 Ruby 1.9.2 降级到 Ruby 1.8.7 以运行 Rails 2.0.2

Java 到 Ruby (Base64/SHA1) 公共(public)摘要生成

javascript - 使用 Prototype JavaScript 从当前 URL 获取 URL 参数

Java 将对象转换为 Object[] 数组并丰富 For 循环

javascript - 作为参数的 javascript 参数和自定义选项之间有区别吗?

ruby - 我如何以编程方式查询 Vagrant 的配置状态?

ruby - 在 github 页面中使用自定义 ruby​​ gem 会引发错误

sql-server - 将 where 子句中的常量移至变量会显着改变执行计划吗?

javascript - 在 Javascript 中处理大字符串

javascript - 了解涉及 `this` 的 `arguments` 行为