带配置块的命令行 Ruby gem
Command-line Ruby gem with configuration block
我的 gem 从命令行命名为 "Falcon" 运行s。使用 ARGV
和 OptionParser
,我在我的应用程序中读取命令行输入和 运行 主要 Ruby 类,没问题。
只要从 Rails 控制台调用,它就可以在初始化文件中使用配置块。在 this basic pattern 之后,我已经做到了,以便用户可以创建如下所示的初始化文件:
# config/initializers/falcon.rb
Falcon.configure do |c|
c.allowed_setting = 'value'
end
然后,在 Rails 控制台中,我可以这样做:
Falcon.configuration.allowed_setting # => 'value'
但是,当我从命令行 运行 时,gem 类 无法使用它们设置的配置选项,而是好像没有设置任何配置一样。我想这是因为从命令行执行不会通过 Rails 环境及其预加载的初始化文件。
我试过 运行宁 bundle exec falcon [command]
,但这并没有解决任何问题。关于如何解决这个问题的任何想法,以便命令行 运行s 具有 Rails 配置的 gem?
如果您的项目专注于 Rails,您可能需要考虑构建一个引擎(因为它使集成和测试变得更加简单)。
另外,查看 Application.initialize!
。
Ruby 中没有自动加载配置文件的工具。是否这样做取决于您。您需要在 Rails 环境中 运行 免费获得此行为,其中 是 自动加载的配置文件,但您不能依赖在 Rails.
之外继续工作
您应该向您的程序添加一个 -c
或 --config
选项,让用户指定您可以加载的配置文件的路径。
我的 gem 从命令行命名为 "Falcon" 运行s。使用 ARGV
和 OptionParser
,我在我的应用程序中读取命令行输入和 运行 主要 Ruby 类,没问题。
只要从 Rails 控制台调用,它就可以在初始化文件中使用配置块。在 this basic pattern 之后,我已经做到了,以便用户可以创建如下所示的初始化文件:
# config/initializers/falcon.rb
Falcon.configure do |c|
c.allowed_setting = 'value'
end
然后,在 Rails 控制台中,我可以这样做:
Falcon.configuration.allowed_setting # => 'value'
但是,当我从命令行 运行 时,gem 类 无法使用它们设置的配置选项,而是好像没有设置任何配置一样。我想这是因为从命令行执行不会通过 Rails 环境及其预加载的初始化文件。
我试过 运行宁 bundle exec falcon [command]
,但这并没有解决任何问题。关于如何解决这个问题的任何想法,以便命令行 运行s 具有 Rails 配置的 gem?
如果您的项目专注于 Rails,您可能需要考虑构建一个引擎(因为它使集成和测试变得更加简单)。
另外,查看 Application.initialize!
。
Ruby 中没有自动加载配置文件的工具。是否这样做取决于您。您需要在 Rails 环境中 运行 免费获得此行为,其中 是 自动加载的配置文件,但您不能依赖在 Rails.
之外继续工作您应该向您的程序添加一个 -c
或 --config
选项,让用户指定您可以加载的配置文件的路径。