为新gem加载rake任务的路径是什么
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为新gem加载rake任务的路径是什么相关的知识,希望对你有一定的参考价值。
我尝试用bundler创建一个新的rubygem,并且意图从rubygem文件夹〜/ work / bezier / lib / task /加载rake任务。但是pwd似乎在/ Users / wizztjh / work / bezier_server中,为新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 load
broadcast,我找到了解决方案。
贝塞尔/任务/ 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 load
pwd是Gem.path的根
另一答案
gem的lib
目录是Railtie rake_tasks
加载路径的根。因此,如果您的任务在lib/tasks/stuff.rake
,请使用load 'tasks/stuff.rake'
。
一个这样的例子是sitemap_generator gem。
以上是关于为新gem加载rake任务的路径是什么的主要内容,如果未能解决你的问题,请参考以下文章
用'rake test`设置TESTOPTS =“ - v”是什么意思?
rake db:mysql2 gem 的迁移错误 - 未加载库:libssl.1.0.0.dylib