小编mir*_*ros的帖子

Rails 3引擎和代码在开发模式下重新加载

我有一个rails 3引擎.在初始化程序中,它需要来自某个文件夹的一堆文件.在这个文件中,我的引擎用户定义了代码,业务逻辑,配置引擎等.所有这些数据都静态存储在我的引擎主模块中(在应用程序属性中)

module MyEngine
  class << self
    def application
      @application ||= MyEngine::Application.new 
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我希望在开发模式下的每个请求上重新加载这些文件.(这样用户就不必重新加载服务器来查看他刚刚做的更改)当然我可以做这样的事情而不是初始化程序

config.to_prepare do
  MyEngine.application.clear!
  load('some/file')  
end
Run Code Online (Sandbox Code Playgroud)

但是这样我会遇到问题(因为这个文件中定义的常量不会真正重新加载).

理想的解决方案是在每次请求时使我的整个引擎可重新加载,但是还没有找到方法.

ruby gem ruby-on-rails rails-engines ruby-on-rails-3

6
推荐指数
1
解决办法
1940
查看次数

不同版本的不同文件扩展名

我正在使用carrierwave上传图片.我需要我的主要图像版本保持其原始格式,但其他版本将转换为GIF.

目前我正在做这样的事情:

 def filename
   change_ext_to_gif(super)
 end

 def change_ext_to_gif(ext)
   ext.chomp(File.extname(ext)) + ".gif"
 end

 version :preview do
   process :resize_to_fill => [60, 60]
   process :convert => "gif"
 end

 version :full do
   process :resize_to_limit => [320, 320]
   process :convert => "gif"
 end

 version :mobile do
   process :resize_to_limit => [72, 96]
   process :convert => "gif"
 end
Run Code Online (Sandbox Code Playgroud)

当然,这也会改变我原始文件的扩展名.有什么方法可以解决这个问题吗?我想我需要覆盖版本块中的一些方法.但我无法弄清楚它们(我尝试重写文件名和网址,这有助于防止版本文件被删除).

ruby carrierwave

5
推荐指数
1
解决办法
1526
查看次数