class Datagrid::Generators::Scaffold
@!visibility private
Public Instance Methods
Source
# File lib/datagrid/generators/scaffold.rb, line 91 def base_grid_file "app/grids/application_grid.rb" end
Source
# File lib/datagrid/generators/scaffold.rb, line 114 def controller_code <<~RUBY class #{grid_controller_class_name} < ApplicationController def index #{index_code.rstrip} end protected def grid_params params.fetch(:#{grid_param_name}, {}).permit! end end RUBY end
Source
# File lib/datagrid/generators/scaffold.rb, line 15 def create_scaffold template "base.rb.erb", base_grid_file unless file_exists?(base_grid_file) template "grid.rb.erb", "app/grids/#{grid_class_name.underscore}.rb" if file_exists?(grid_controller_file) inject_into_file grid_controller_file, index_action, after: %r{class .*#{grid_controller_class_name}.*\n} else create_file grid_controller_file, controller_code end create_file view_file, view_code route(generate_routing_namespace("resources :#{grid_controller_short_name}")) gem "kaminari" unless kaminari? || will_paginate? || pagy? in_root do { "css" => " *= require datagrid", "css.sass" => " *= require datagrid", "css.scss" => " *= require datagrid", }.each do |extension, string| file = "app/assets/stylesheets/application.#{extension}" if file_exists?(file) inject_into_file file, "#{string}\n", { before: %r{.*require_self} } # before all end end end end
Source
# File lib/datagrid/generators/scaffold.rb, line 48 def grid_base_class file_exists?("app/grids/base_grid.rb") ? "BaseGrid" : "ApplicationGrid" end
Source
# File lib/datagrid/generators/scaffold.rb, line 44 def grid_class_name "#{file_name.camelize.pluralize}Grid" end
Source
# File lib/datagrid/generators/scaffold.rb, line 52 def grid_controller_class_name "#{controller_class_name.camelize}Controller" end
Source
# File lib/datagrid/generators/scaffold.rb, line 56 def grid_controller_file Rails.root.join("app/controllers").join("#{grid_controller_class_name.underscore}.rb") end
Source
# File lib/datagrid/generators/scaffold.rb, line 60 def grid_controller_short_name controller_file_name end
Source
# File lib/datagrid/generators/scaffold.rb, line 64 def grid_model_name file_name.camelize.singularize end
Source
# File lib/datagrid/generators/scaffold.rb, line 68 def grid_param_name grid_class_name.underscore end
Source
# File lib/datagrid/generators/scaffold.rb, line 95 def grid_route_name "#{controller_class_name.underscore.gsub('/', '_')}_path" end
Source
# File lib/datagrid/generators/scaffold.rb, line 99 def index_code if pagy? <<-RUBY @grid = #{grid_class_name}.new(grid_params) @pagy, @assets = pagy(@grid.assets) RUBY else <<-RUBY @grid = #{grid_class_name}.new(grid_params) do |scope| scope.page(params[:page]) end RUBY end end
Source
# File lib/datagrid/generators/scaffold.rb, line 72 def pagination_helper_code if will_paginate? "will_paginate(@grid.assets)" elsif pagy? "pagy_nav(@pagy)" else # Kaminari is default "paginate(@grid.assets)" end end
Source
# File lib/datagrid/generators/scaffold.rb, line 83 def table_helper_code if pagy? "datagrid_table @grid, @records" else "datagrid_table @grid" end end
Source
# File lib/datagrid/generators/scaffold.rb, line 130 def view_code <<~ERB <%= datagrid_form_with model: @grid, url: #{grid_route_name} %> <%= #{pagination_helper_code} %> <%= #{table_helper_code} %> <%= #{pagination_helper_code} %> ERB end
Source
# File lib/datagrid/generators/scaffold.rb, line 40 def view_file Rails.root.join("app/views").join(controller_file_path).join("index.html.erb") end
Protected Instance Methods
Source
# File lib/datagrid/generators/scaffold.rb, line 166 def file_exists?(name) name = Rails.root.join(name) unless name.to_s.first == "/" File.exist?(name) end
Source
# File lib/datagrid/generators/scaffold.rb, line 142 def generate_routing_namespace(code) depth = regular_class_path.length # Create 'namespace' ladder # namespace :foo do # namespace :bar do namespace_ladder = regular_class_path.each_with_index.map do |ns, i| indent("namespace :#{ns} do\n", i * 2) end.join # Create route # get 'baz/index' route = indent(code, depth * 2) # Create `end` ladder # end # end end_ladder = (1..depth).reverse_each.map do |i| indent("end\n", i * 2) end.join # Combine the 3 parts to generate complete route entry "#{namespace_ladder}#{route}\n#{end_ladder}" end
Source
# File lib/datagrid/generators/scaffold.rb, line 179 def kaminari? defined?(::Kaminari) end
Source
# File lib/datagrid/generators/scaffold.rb, line 175 def will_paginate? defined?(::WillPaginate) end