Ruby on rails 如何在lib文件夹中生成控制器/模型/视图?(Ruby on Rails)
我是ruby的新手,遇到了这个问题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似乎没有任
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应用程序能够使用这些模块。因此,尽管思想不是理想,但它是有效的