【问题标题】:Gem's configuration not being set in Rails initializer未在 Rails 初始化程序中设置 Gem 的配置
【发布时间】: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


    【解决方案1】:

    在我的可执行文件radin我添加了:

    begin
      load File.join(Dir.pwd, 'config', 'initializers', 'radin.rb')
    rescue LoadError
      puts "Please run `rails generate radin:install` before continuing "
    end
    

    现在一切似乎都正常了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-14
      相关资源
      最近更新 更多