method
route
rails latest stable - Class:
Rails::Generators::Actions
route(routing_code, namespace: nil)public
Make an entry in Rails routing file config/routes.rb
route "root 'welcome#index'" route "root 'admin#index'", namespace: :admin
# File railties/lib/rails/generators/actions.rb, line 409
def route(routing_code, namespace: nil)
namespace = Array(namespace)
namespace_pattern = route_namespace_pattern(namespace)
routing_code = namespace.reverse.reduce(routing_code) do |code, name|
"namespace :#{name} do\n#{rebase_indentation(code, 2)}end"
end
log :route, routing_code
in_root do
if namespace_match = match_file("config/routes.rb", namespace_pattern)
base_indent, *, existing_block_indent = namespace_match.captures.compact.map(&:length)
existing_line_pattern = /^[ ]{,#{existing_block_indent}}\S.+\n?/
routing_code = rebase_indentation(routing_code, base_indent + 2).gsub(existing_line_pattern, "")
namespace_pattern = /#{Regexp.escape namespace_match.to_s}/
end
inject_into_file "config/routes.rb", routing_code, after: namespace_pattern, verbose: false, force: false
if behavior == :revoke && namespace.any? && namespace_match
empty_block_pattern = /(#{namespace_pattern})((?:\s*end\n){1,#{namespace.size}})/
gsub_file "config/routes.rb", empty_block_pattern, verbose: false, force: true do |matched|
beginning, ending = empty_block_pattern.match(matched).captures
ending.sub!(/\A\s*end\n/, "") while !ending.empty? && beginning.sub!(/^[ ]*namespace .+ do\n\s*\z/, "")
beginning + ending
end
end
end
end Related methods
- Instance methods
- add_source
- application
- environment
- gem
- gem_group
- generate
- git
- github
- initializer
- lib
- rails_command
- rake
- rakefile
- readme
- route
- vendor
- Class methods
- new
- Private methods
-
append_file_with_newline -
execute_command -
indentation -
log -
match_file -
optimize_indentation -
quote -
rebase_indentation -
route_namespace_pattern -
with_indentation