我有一个我一直试图配置的宝石。目标是在初始化程序文件中有一个配置块,允许开发人员在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的开发人员的开发环境工作流程?