我正在尝试建立一个宝石。在gem中,我有一些文件需要复制到宿主应用程序。
所以我想构建一个生成器,它将模板从gem复制到主机应用程序到特定目录。
贝娄是我的宝石结构。
我试图从主机应用程序运行bellow命令。
rails g rfile_manager:install
install_generator.rb 的内容如下所示
require 'rails/generators'
module RfileManager
module Generators
class InstallGenerator < Rails::Generators::Base
# copy configuration
def copy_initializer
template 'rfile_manager.rb', 'config/initializers/rfile_manager.rb'
template 'rfile_manager.yml', 'config/rfile_manager.yml'
end
end
end
end
它不起作用,我正在收到关于运行上述命令的信息。
Could not find "rfile_manager.rb" in any of your source paths.
Please invoke RfileManager::Generators::InstallGenerator.source_root(PATH)
with the PATH containing your templates. Currently you have no source paths.
请帮助我
答案 0 :(得分:0)
从guides.rubyonrails.org开始,需要添加类方法 source_root 。此方法指向放置生成器模板的位置。默认情况下,它指向 lib / generators / install / templates 。
Bellow code修复了这个问题。
require 'rails/generators'
module RfileManager
module Generators
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path("../templates", __FILE__)#This line added
# copy configuration
def copy_initializer
template 'rfile_manager.rb', 'config/initializers/rfile_manager.rb'
template 'rfile_manager.yml', 'config/rfile_manager.yml'
end
end
end
end