add gem rake for rails

使用过rails插件的一定知道,只要在插件的tasks目录下面定义rake文件,rails就会自动加入其中定义的task。但是gem就不能这样用了,即使rake gems:unpack也没用。

解决的方法是将定义在gem中的task require到rails目录下。比如我在css_sprite gem的lib/css_sprite.rb中定义

unless Rake::Task.task_defined? "css_sprite:build"
  load File.join(File.dirname(__FILE__), '..', 'tasks', 'css_sprite_tasks.rake')
end

上面3行的意思是如果当前的tasks中没有css_sprite:build的话,就load gem中的tasks/css_sprite_tasks.rake。

然后在rails app中增加lib/tasks/css_sprite.rake

require 'css_sprite'

这样你就可以使用rake css_sprite:build task了。

更懒的方法是直接把require css_sprite'加到rails目录下的Rakefile。

Posted in  rails rubygems


blog comments powered by Disqus
Fork me on GitHub