我试图用bundler创建一个新的rubygem,并打算从rubygem文件夹~/work/bezier/lib/task/加载rake任务。但是pwd似乎在/users/wizztjh/work/bezier_服务器中,为新gem加载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

但是路径/目的地是什么?

最佳答案

我尝试使用github的高级代码搜索来搜索Rails::Railtie rake_tasks do loadbroadcast并找到了解决方案。
bezier/tasks/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 railtieloadpwd是gem路径的根。

10-08 04:26