Sprockets缓存停止对初始化程序配置的更改

时间:2016-01-12 03:47:15

标签: ruby-on-rails ruby sass sprockets

我有一个我一直试图配置的宝石。目标是在初始化程序文件中有一个配置块,允许开发人员在gems scss文件中自定义media_query断点。

我的配置类看起来像这样

# my_gem/lib/my_gem/configuration.rb
module MyGem
  class << self
    attr_accessor :configuration
  end

  def self.configure
    self.configuration ||= Configuration.new
    yield(configuration)
  end

  class Configuration
    attr_accessor :med_pixel_width, :lrg_pixel_width

    def initialize
      @med_pixel_width = 600
      @lrg_pixel_width = 1024
    end
  end
end

我创建了一个工作正常rails g my_gem的生成器,它使用cofig块创建了以下初始化文件

# config/initializers/my_gem.rb
MyGem.configure do |config|
  config.med_pixel_width = 768
  config.lrg_pixel_width = 1024
end

然后在我的gems样式表中,我抓住了配置

# app/assets/stylesheets/my_gem/my_style.scss.erb
@media only screen and (min-width: <%= MyGem.configuration.med_pixel_width %>px ) {
  .styles {
    color: red;
  }
}    

运行捆绑包并在我的测试应用程序的application.css中包含gems css资产文件后,我可以看到浏览器中的样式按预期应用。 AND 配置正常。仅在第一次启动服务器时。在我尝试再次更改配置后,不会发生任何更改。

我发现缓存的链轮是罪魁祸首。我通过在我的配置块正上方添加rake tmp:clear确认,然后每当我重新启动服务器时都能正常工作我可以看到正在发生的变化

# config/initializers/my_gem.rb
system `rake tmp:clear`
MyGem.configure do |config|
  config.med_pixel_width = 768
  config.lrg_pixel_width = 1024
end

我的问题是我还缺少其他一些简单的解决方案吗?如果没有......将这个rake tmp:clear放在我的初始化程序文件中是不好的做法?是否会降低使用gem的开发人员的开发环境工作流程?

0 个答案:

没有答案