Ruby on rails 为什么我的rails生成器模板方法会导致';文件_clash';
因此,我正在编写一个rails生成器来完成最简单的事情:将一些模型文件从gem的lib/generators/pathways/templates目录复制到app/models目录中的一个项目中。我可能的错误理解是,模板方法基本上是一个带有源/目标的文件副本 (请注意,“路径”是安装此生成器的我的gem的名称) 以下是生成器中复制代码的细节:Ruby on rails 为什么我的rails生成器模板方法会导致';文件_clash';,ruby-on-rails,ruby,generator,Ruby On Rails,Ruby,Generator,因此,我正在编写一个rails生成器来完成最简单的事情:将一些模型文件从gem的lib/generators/pathways/templates目录复制到app/models目录中的一个项目中。我可能的错误理解是,模板方法基本上是一个带有源/目标的文件副本 (请注意,“路径”是安装此生成器的我的gem的名称) 以下是生成器中复制代码的细节: def copy_models project_models_location = "#{Rails.root}/app/models/" [
def copy_models
project_models_location = "#{Rails.root}/app/models/"
[
"pathways_experiment.rb",
...
].each do |filename|
puts "copying #{filename} to #{project_models_location}"
template filename, "#{project_models_location}"
end
end
puts显示了我所期望的内容:
将路径_experience.rb复制到
/用户/meuser/Projects/testing\u gem/exp\u gem\u test/app/models/
但是,对模板方法的调用会转储此输出:
文件\u碰撞应用程序/模型
我检查了目标目录,但目录中没有文件,所以看起来不是,因为代码试图覆盖文件
以下是整个生成器的源代码,以防我没有包含或扩展正确的类/模块:
需要“轨道/发电机”
需要“轨道/发电机/活动记录”
module Pathways
class InstallGenerator < ActiveRecord::Generators::Base
include Rails::Generators::Migration
source_root File.expand_path("../templates", __FILE__)
def code_that_runs
puts "PATHWAYS: installing models"
copy_models
end
private
def copy_models
project_models_location = "#{Rails.root}/app/models/"
[
"pathways_experiment.rb",
...
].each do |filename|
puts "copying #{filename} to #{project_models_location}"
template filename, "#{project_models_location}"
end
end
end
end
模块路径
类InstallGenerator
模板文件名“{project\u models\u location}/{filename}”
?您有什么问题吗?:)⇑ 应该有用吧?啊,很有趣。我找到的所有示例都不需要您输入文件名。我要试一试。谢谢<代码>模板文件名,“#{project_models_location}/#{filename}”
?您有什么问题吗?:)⇑ 应该有用吧?啊,很有趣。我找到的所有示例都不需要您输入文件名。我要试一试。谢谢