[英]How do I access one of my models from within a ruby script in the /lib/ folder in my Rails 3 app?
[英]How to generate controller/models/views inside lib folder? (Ruby on Rails)
我是红宝石的新手,遇到了这个问题。
rails generate model whatever
在/app/models/
文件夹中创建一些文件, rails generate model whatever
。 但是如果我想在例如/lib/modules/monitor/app/
我一直在搜索,没有找到任何东西。 我尝试将路径放入命令中,但是它不起作用,它只是在/ app文件夹中创建了指定的路径。
现在,我正在做的是例如创建一个控制器,然后将已创建的文件从/ app复制到/ lib / modules / monitor / app,但这并不是很好,因为您必须手动复制所有文件。
有一个更好的方法吗?
从应用程序复制文件到lib似乎没有任何常规的理由。 Rails应用程序甚至可以使用它们吗? 我的猜测可能并非没有打破很多东西。 但是,如果您只是想使用Rails生成器来生成文件并将它们自动复制到其他位置,则可能需要查看此gem
gem install listen
在使用rails生成器之前,例如在文件bin/file_duper.rb
您需要编写一个ruby脚本并从项目的根目录运行它。
#!/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
文件中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.