Class: SqlOptimizerGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- SqlOptimizerGenerator
- Defined in:
- lib/generators/sql_optimizer_generator.rb
Instance Method Summary collapse
- #initializer_content ⇒ Object
- #migrate_query_logs ⇒ Object
- #migration_content ⇒ Object
- #model_content ⇒ Object
- #route_content ⇒ Object
Instance Method Details
#initializer_content ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/generators/sql_optimizer_generator.rb', line 49 def initializer_content <<~RUBY # This is for tracking sql queries QueryTrace.enable! RUBY end |
#migrate_query_logs ⇒ Object
4 5 6 7 8 9 10 11 12 |
# File 'lib/generators/sql_optimizer_generator.rb', line 4 def migrate_query_logs migration_number = Dir.glob("#{Rails.root}/db/migrate/*").max_by { |name| name[/\d+/].to_i }[/\d+/].to_i + 1 create_file "db/migrate/#{migration_number}_create_query_logs.rb", migration_content create_file 'app/models/query_log.rb', model_content application(nil, env: :development) { initializer_content } route route_content rake 'db:migrate' puts 'Done' end |
#migration_content ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/generators/sql_optimizer_generator.rb', line 14 def migration_content <<~RUBY class CreateQueryLogs < ActiveRecord::Migration[6.0] def change create_table :query_logs do |t| t.string :query t.float :duration t.string :source t.bigint :follow_id t.integer :n_plus_one_size, default: 1 t.timestamps end end end RUBY end |
#model_content ⇒ Object
32 33 34 35 36 37 |
# File 'lib/generators/sql_optimizer_generator.rb', line 32 def model_content <<~RUBY class QueryLog < ApplicationRecord end RUBY end |
#route_content ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/generators/sql_optimizer_generator.rb', line 39 def route_content <<~RUBY if Rails.env.development? get 'sql_optimizer', to: 'sql_optimizer#index' get 'graph', to: 'sql_optimizer#graph' end RUBY end |