ine*_*ufo 28 plugins warnings ruby-on-rails ruby-on-rails-3.2
升级到rails3.2.1后,会出现此警告:
你在供应商/插件中有Rails 2.3风格的插件!在Rails 4.0中将删除对这些插件的支持.移出它们并将它们捆绑在Gemfile中,或者将它们作为lib/myplugin/*和config/initializers/myplugin.rb折叠到您的应用程序中.有关详细信息,请参阅发行说明:http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released
我在plug/plugins目录中移动我的插件,但我不知道如何编写config/initializers/myplugin.rb文件,谷歌找不到答案.
我刚刚完成了这个,发现你只需要浏览每个插件来检查一些事情:
vendor/plugins
vendor/plugins
并移动到lib/plugins
我碰到的一件事是你需要手动要求所有这些插件.这是我创建并放置的初始化程序config/initializers/plugins.rb
:
Dir[Rails.root.join('lib', 'plugins', '*')].each do |plugin|
next if File.basename(plugin) == 'initializers'
lib = File.join(plugin, 'lib')
$LOAD_PATH.unshift lib
begin
require File.join(plugin, 'init.rb')
rescue LoadError
begin
require File.join(lib, File.basename(plugin) + '.rb')
rescue LoadError
require File.join(lib, File.basename(plugin).underscore + '.rb')
end
end
initializer = File.join(File.dirname(plugin), 'initializers', File.basename(plugin) + '.rb')
require initializer if File.exists?(initializer)
end
Run Code Online (Sandbox Code Playgroud)
我也遇到了一些插件所需的初始化器问题,所以我将这些特定的初始化器移到了lib/plugins/initializers
文件夹中.您必须将它们命名为插件的名称,因此插件的初始化程序my_plugin
必须位于文件中lib/plugins/initializers/my_plugin.rb
希望这可以帮助!
其他答案都很好,似乎工作.
但是,如果您的插件包含vendor/plugins /.../ lib下的单个.rb文件,那么vendor/plugins /.../ init.rb只是一个
require 'pluginname'
Run Code Online (Sandbox Code Playgroud)
然后,您只需将单个文件复制到lib目录,然后将文件添加到需要'yourpluginname'的config/initializers中
下面是使用acts_as_rated插件的具体示例,该插件还不是gem.
使用以下命令创建文件config/initializers/acts_as_rated.rb ...
要求'acts_as_rated'
删除vendor/plugins/acts_as_rated