2012-07-13 72 views
3

我尝试使用bundler创建新的rubygem,并打算从rubygem文件夹加载rake任务〜/ work/bezier/lib/task /。但是密码似乎在/ Users/wizztjh/work/bezier_server中,为新的gem加载rake任务的路径是什么?什么是加载新宝石的rake任务的路径

我rubygem文件夹

bezier/lib 
    /railtie.rb 
    /task/get_transitions.rake 

From: /Users/wizztjh/work/bezier/lib/bezier/railtie.rb @ line 4 : 

    1: module Bezier 
    2: class Railtie < Rails::Railtie 
    3:  rake_tasks do 
=> 4:  binding.pry 
    5:  load "lib/task/get_transitions.rake" 
    6:  end 
    7: end 
    8: end 

[1] pry(#<Bezier::Railtie>)> Dir.pwd 
=> "/Users/wizztjh/work/bezier_server" 
[2] pry(#<Bezier::Railtie>)> 

因为根据rubygem文档

rake_tasks do 
    load "path/to/my_railtie.tasks" 
end 

但什么是路径/到?

回答

2

我尝试使用github的高级代码搜索来搜索Rails::Railtie rake_tasks do loadbroadcast,我找到了解决方案。

贝塞尔/任务/ get_transitions.rake

#bezier/lib/railtie.rb 
module Bezier 
    class Railtie < Rails::Railtie 
    railtie_name :bezier 
    rake_tasks do 
     load "bezier/tasks/get_transitions.rake" 
    end 
    end 
end 

所以,红宝石宝石railtie load PWD是Gem.path

1

根宝石的lib目录是Railtie rake_tasks负载的根路径。所以如果你的任务在lib/tasks/stuff.rake,请使用load 'tasks/stuff.rake'

其中一个例子是sitemap_generator gem