【发布时间】:2017-07-26 18:15:07
【问题描述】:
我正在制作一颗红宝石,我们称之为 Radin。它用于 Rails 项目。有一个安装过程通过运行rails generate radin:install创建config/initializers/radin.rb。
config/initializers/radin.rb(Rails 项目)
Radin.configure do |config|
# Set this options to what makes sense for you
config.option = 'test'
end
生成器按预期工作(如上所示)。在我的 gem 中,我关注了两个链接 MyGem.configure Block 和 Config and Generators in Gems。
我有一个可执行文件来检查配置是否已设置。
/exe/radin
#!/usr/bin/env ruby
require 'radin'
output = {}
output["option"] = Radin::Documentor.test_configuration
puts "Output: #{output}"
我的 Documentor 类只输出我的一个配置选项
/lib/radin/documentor.rb
module Radin
class Documentor
def self.test_configuration
Radin.configuration.option
end
end
end
终于有了我的Radin 模块和Configuration 课程
/lib/radin.rb
require "radin/version"
require 'json'
module Radin
autoload :Documentor, 'radin/documentor'
class << self
attr_accessor :configuration
end
def self.configure
self.configuration ||= Configuration.new
yield(configuration)
end
class Configuration
attr_accessor :option
def initialize
@option = 'default_option'
end
end
end
当我在测试 Rails 应用程序目录中运行 $ radin 时,我得到一个错误,尽管在 config/initializers/radin.rb 中设置了配置选项。
.../radin/lib/radin/documentor.rb:8:in
test_configuration': undefined methodoption' for nil:NilClass (NoMethodError)
尝试和失败 我尝试将更改模块设置为始终具有默认设置,但是尽管更改了初始化程序中的配置,但该选项永远不会从“default_option”更改。
module Radin
class << self
attr_accessor :configuration
end
def self.configuration
@configuration ||= Configuration.new
end
def self.configure
yield(configuration)
end
...
【问题讨论】:
标签: ruby-on-rails ruby rubygems