4

バンドラーを使用して新しい ruby​​gem を作成し、rubygem フォルダー ~/work/bezier/lib/task/ から rake タスクをロードしようとしています。しかし、pwd は /Users/wizztjh/work/bezier_server にあるようです。新しい gem の rake タスクをロードするパスは何ですか?

私の ruby​​gem フォルダー

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

しかし、path/to とは何ですか?

4

2 に答える 2

3

github による高度なコード検索を使用してRails::Railtie rake_tasks do load ブロードキャストを検索しようとすると、解決策が見つかりました。

ベジエ/タスク/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

つまり、 ruby​​ gem railtie loadpwd が Gem.path のルートです。

于 2012-07-14T06:35:52.653 に答える
2

gem のlibディレクトリは、Railtierake_tasksロード パスのルートです。したがって、タスクが にある場合はlib/tasks/stuff.rake、 を使用してくださいload 'tasks/stuff.rake'

そのような例の 1 つがsitemap_generator gemです。

于 2017-10-23T01:00:59.630 に答える