Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 如何在lib文件夹中生成控制器/模型/视图?(Ruby on Rails)_Ruby On Rails_Ruby_Model View Controller_Lib_Generate - Fatal编程技术网

Ruby on rails 如何在lib文件夹中生成控制器/模型/视图?(Ruby on Rails)

Ruby on rails 如何在lib文件夹中生成控制器/模型/视图?(Ruby on Rails),ruby-on-rails,ruby,model-view-controller,lib,generate,Ruby On Rails,Ruby,Model View Controller,Lib,Generate,我是ruby的新手,遇到了这个问题 rails生成模型无论什么都会在/app/models/文件夹中创建一些文件。但是如果我想在lib内部生成这些,例如在/lib/modules/monitor/app/ 我一直在找,什么也没找到。我尝试将路径放入命令中,但不起作用,它只是在/app文件夹中创建指定的路径 现在我正在做的是创建一个控制器,例如,将创建的文件从/app复制到/lib/modules/monitor/app,这不是很好,因为您必须手动复制所有文件 有更好的方法吗?rails似乎没有任

我是ruby的新手,遇到了这个问题

rails生成模型无论什么
都会在
/app/models/
文件夹中创建一些文件。但是如果我想在lib内部生成这些,例如在
/lib/modules/monitor/app/

我一直在找,什么也没找到。我尝试将路径放入命令中,但不起作用,它只是在/app文件夹中创建指定的路径

现在我正在做的是创建一个控制器,例如,将创建的文件从/app复制到/lib/modules/monitor/app,这不是很好,因为您必须手动复制所有文件


有更好的方法吗?

rails似乎没有任何传统的理由将文件从应用程序复制到库中。rails应用程序甚至可以使用它们吗?我的猜测可能不是没有打破很多东西。但是,如果您只是想使用rails生成器生成文件并让它们自动复制到其他位置,您可能需要签出

在使用rails生成器之前,您需要编写一个ruby脚本并从项目的根目录运行它,例如在文件
bin/file\u duper.rb

#!/usr/bin/env ruby
require 'listen'
rails_root = Dir.exists?(Dir.pwd + '/app') ? Dir.pwd : nil
abort('This script must be run from rails root') unless rails_root
dest_folder = Dir.pwd + '/lib/modules/'
unless Dir.exists?(dest_folder)
  FileUtils.mkdir(dest_folder)
end

listener = Listen.to(rails_root, dest_folder) do |modified, added, removed|
  added.each do |file|
    FileUtils.cp(file, dest_folder + file.split('app/')[1])
  end
  modified.each do |file|
    FileUtils.cp(file, dest_folder + file.split('app/')[1])
  end
  removed.each do |file|
    FileUtils.rm(file, dest_folder + file.split('app/')[1])
  end
end

listener.start 
sleep
现在,在运行此脚本之前,请确保您位于rails项目根目录中。您可能希望(在后台)运行此命令

如果你想让它在后台运行,你可以像

ruby bin/file_duper.rb &
这将使用ruby rb fsevent在后台运行多个进程。如果您需要停止这些过程,您可以这样做

pgrep -f rb-fseven | xargs kill

警告:此脚本未经过严格测试,可能存在缺陷。此外,这种类型的文件复制可能会导致git版本控制出现问题,因此您可能需要将
lib/modules/
添加到您的项目
.gitignore
文件(假设您使用的是版本控制)

似乎没有任何传统的rails理由将文件从应用程序复制到lib。rails应用程序甚至可以使用它们吗?我的猜测可能不是没有打破很多东西。但是,如果您只是想使用rails生成器生成文件并让它们自动复制到其他位置,您可能需要签出

在使用rails生成器之前,您需要编写一个ruby脚本并从项目的根目录运行它,例如在文件
bin/file\u duper.rb

#!/usr/bin/env ruby
require 'listen'
rails_root = Dir.exists?(Dir.pwd + '/app') ? Dir.pwd : nil
abort('This script must be run from rails root') unless rails_root
dest_folder = Dir.pwd + '/lib/modules/'
unless Dir.exists?(dest_folder)
  FileUtils.mkdir(dest_folder)
end

listener = Listen.to(rails_root, dest_folder) do |modified, added, removed|
  added.each do |file|
    FileUtils.cp(file, dest_folder + file.split('app/')[1])
  end
  modified.each do |file|
    FileUtils.cp(file, dest_folder + file.split('app/')[1])
  end
  removed.each do |file|
    FileUtils.rm(file, dest_folder + file.split('app/')[1])
  end
end

listener.start 
sleep
现在,在运行此脚本之前,请确保您位于rails项目根目录中。您可能希望(在后台)运行此命令

如果你想让它在后台运行,你可以像

ruby bin/file_duper.rb &
这将使用ruby rb fsevent在后台运行多个进程。如果您需要停止这些过程,您可以这样做

pgrep -f rb-fseven | xargs kill

警告:此脚本未经过严格测试,可能存在缺陷。此外,这种类型的文件复制可能会导致git版本控制出现问题,因此您可能需要将
lib/modules/
添加到您的项目
.gitignore
文件(假设您使用的是版本控制)

为什么要在lib中包含模型?您所做的完全打破了Rails MVC的惯例。这与Rails“约定优先于配置”的整个概念背道而驰的想法或观点是什么?如果你真的想移动或复制文件夹,那么如果你使用
cp-R app/models/lib/modules/wtf\u am\u i\u来做这个/
老实说,我真的不知道,但我开始在一家公司工作,他们就是这样,他们肯定有他们的理由。所以我必须在这个文件夹中不断地创建控制器/模型/视图,我不想一直复制文件,用这个命令会很容易。为什么不把它们符号化呢?如果原始文件发生更改,会发生什么情况?您必须再次复制它们吗?为什么要在lib中包含模型?您所做的完全违反了Rails MVC惯例。这与Rails“约定优先于配置”的整个概念背道而驰的想法或观点是什么?如果你真的想移动或复制文件夹,那么如果你使用
cp-R app/models/lib/modules/wtf\u am\u i\u来做这个/
老实说,我真的不知道,但我开始在一家公司工作,他们就是这样,他们肯定有他们的理由。所以我必须在这个文件夹中不断地创建控制器/模型/视图,我不想一直复制文件,用这个命令会很容易。为什么不把它们符号化呢?如果原始文件发生更改,会发生什么情况?你一定要再抄一遍吗?非常感谢!!!顺便说一句,rails应用程序能够使用这些模块。所以,虽然这不是理想,但它确实非常感谢你!!!顺便说一句,rails应用程序能够使用这些模块。因此,尽管思想不是理想,但它是有效的