![](/img/trans.png)
[英]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.