有时我运行像rails g controller foo index
这样的命令来为控制器和模板生成骨架。
因为我不想为每个控制器提供帮助和资产,所以我将以下代码放入config/application.rb
:
config.generators do |g| g.helper false g.assets false end
还有一件事我不想发生。生成器向get "foo/index"
添加一行config/routes.rb
。我该如何预防?
答案 0 :(得分:14)
从Rails 4.2开始,可以使用application.rb中的以下代码禁用路由生成.rb:
config.generators do |g|
g.skip_routes true
end
来源:https://github.com/rails/rails/commit/4b173b8ed90cb409c1cdfb922914b41b5e212cb6
答案 1 :(得分:4)
看起来路由生成是硬编码的。看看这个方法 https://github.com/rails/rails/blob/master/railties/lib/rails/generators/rails/controller/controller_generator.rb#L12
我认为,最简单的方法是使用monkey-patch覆盖。像
这样的东西module Rails
module Generators
class ControllerGenerator < NamedBase
def add_routes
#do nothing...
end
end
end
end
你可以把它放到初始化器中试试。
答案 2 :(得分:3)
未经测试...
config.generators do |g|
g.resource_route false
end
https://github.com/rails/rails/blob/master/railties/lib/rails/generators.rb
答案 3 :(得分:3)
因为您希望此特定应用程序不生成路由。
您可以将您的宝石部署到本地/项目文件夹并覆盖它们。
在rails项目文件夹中
bundle install --path /my_rails_path/lib/
现在,您可以看到移植到项目lib/
文件夹
转到以下文件(路径更改取决于您的版本)
lib/ruby/1.9.1/gems/railties-3.2.15/lib/rails/generators/rails/controller/controller_generator.rb
并评论函数add_routes
def add_routes
#actions.reverse.each do |action|
# route %{get "#{file_name}/#{action}"}
#end
end
注意:此技巧不会影响系统中的任何其他rails应用程序
答案 4 :(得分:2)
如果您想避免所有控制器的资产或帮助程序,那么您可以在application.rb中编写以下行。
config.generators.stylesheets = false
config.generators.javascripts = false
config.generators.helper = false
但是如果想要避免任何一个控制器,那么你就像这样生成控制器
rails g controller test --no_assets
rails g controller test --no_helper
rails g controller test --no_javascripts
rails g controller test --no_stylesheets
答案 5 :(得分:1)
创建自己的发电机!以下链接将有所帮助:
答案 6 :(得分:1)
这是违反直觉的,但这是你正在寻找的:
config.generators do |g|
g.skip_routes true
end