Gem 的配置未在 Rails 初始化程序中设置
Gem's configuration not being set in Rails initializer
我正在制作一个 ruby gem 我们称它为 Radin。它用于 Rails 个项目。有一个安装过程通过 运行ning 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 and Config and Generators in Gems.
我有一个可执行文件来检查配置是否已设置。
/exe/radin
#!/usr/bin/env ruby
require 'radin'
output = {}
output["option"] = Radin::Documentor.test_configuration
puts "Output: #{output}"
My Documentor class 只输出我的一个配置选项
/lib/radin/documentor.rb
module Radin
class Documentor
def self.test_configuration
Radin.configuration.option
end
end
end
终于有了我的 Radin
模块和 Configuration
class
/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
当我 运行 $ radin
在测试 rails 应用程序目录中时,尽管在 config/initializers/radin.rb
中设置了配置选项,但我收到错误消息。
.../radin/lib/radin/documentor.rb:8:in test_configuration': undefined
method
option' 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
...
在我的可执行文件中 radin
我添加了:
begin
load File.join(Dir.pwd, 'config', 'initializers', 'radin.rb')
rescue LoadError
puts "Please run `rails generate radin:install` before continuing "
end
现在似乎一切正常。
我正在制作一个 ruby gem 我们称它为 Radin。它用于 Rails 个项目。有一个安装过程通过 运行ning 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 and Config and Generators in Gems.
我有一个可执行文件来检查配置是否已设置。
/exe/radin
#!/usr/bin/env ruby
require 'radin'
output = {}
output["option"] = Radin::Documentor.test_configuration
puts "Output: #{output}"
My Documentor class 只输出我的一个配置选项
/lib/radin/documentor.rb
module Radin
class Documentor
def self.test_configuration
Radin.configuration.option
end
end
end
终于有了我的 Radin
模块和 Configuration
class
/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
当我 运行 $ radin
在测试 rails 应用程序目录中时,尽管在 config/initializers/radin.rb
中设置了配置选项,但我收到错误消息。
.../radin/lib/radin/documentor.rb:8:in
test_configuration': undefined method
option' 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
...
在我的可执行文件中 radin
我添加了:
begin
load File.join(Dir.pwd, 'config', 'initializers', 'radin.rb')
rescue LoadError
puts "Please run `rails generate radin:install` before continuing "
end
现在似乎一切正常。