Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么我的rails生成器模板方法会导致';文件_clash';_Ruby On Rails_Ruby_Generator - Fatal编程技术网

Ruby on rails 为什么我的rails生成器模板方法会导致';文件_clash';

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/" [

因此,我正在编写一个rails生成器来完成最简单的事情:将一些模型文件从gem的lib/generators/pathways/templates目录复制到app/models目录中的一个项目中。我可能的错误理解是,模板方法基本上是一个带有源/目标的文件副本

(请注意,“路径”是安装此生成器的我的gem的名称)

以下是生成器中复制代码的细节:

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}”
?您有什么问题吗?:)⇑ 应该有用吧?啊,很有趣。我找到的所有示例都不需要您输入文件名。我要试一试。谢谢