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



我对 ruby 有点陌生,我遇到了这个问题。

rails generate model whatever/app/models/文件夹中创建一些文件。 但是,如果我想在 lib 中生成它们,例如在/lib/modules/monitor/app/

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

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

有没有更好的方法可以做到这一点?

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

gem install listen

在使用 rails 生成器之前,您需要编写一个 ruby 脚本并从项目的根目录运行它,例如在文件bin/file_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 # running in terminal can be killed with ctrl + c

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

ruby bin/file_duper.rb &

这将使用 ruby rb-fsevent 在后台运行多个进程。 如果您需要停止这些进程,您可以执行

pgrep -f rb-fseven | xargs kill

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

最新更新