簡體   English   中英

如何在lib文件夾中生成controller / models / views? (Ruby on Rails)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM