lotusrb 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +57 -14
- data/FEATURES.md +21 -0
- data/LICENSE.md +1 -1
- data/README.md +8 -7
- data/bin/lotus +1 -0
- data/lib/lotus.rb +6 -0
- data/lib/lotus/action/csrf_protection.rb +1 -1
- data/lib/lotus/application.rb +4 -4
- data/lib/lotus/application_name.rb +8 -6
- data/lib/lotus/cli.rb +75 -66
- data/lib/lotus/cli_sub_commands/assets.rb +29 -0
- data/lib/lotus/{commands → cli_sub_commands}/db.rb +24 -29
- data/lib/lotus/cli_sub_commands/destroy.rb +102 -0
- data/lib/lotus/cli_sub_commands/generate.rb +127 -0
- data/lib/lotus/commands/assets/precompile.rb +35 -0
- data/lib/lotus/commands/console.rb +28 -8
- data/lib/lotus/commands/db/abstract.rb +6 -2
- data/lib/lotus/commands/db/console.rb +5 -5
- data/lib/lotus/commands/generate/abstract.rb +63 -0
- data/lib/lotus/commands/generate/action.rb +262 -0
- data/lib/lotus/commands/generate/app.rb +116 -0
- data/lib/lotus/commands/generate/mailer.rb +118 -0
- data/lib/lotus/commands/generate/migration.rb +63 -0
- data/lib/lotus/commands/generate/model.rb +96 -0
- data/lib/lotus/commands/new/abstract.rb +128 -0
- data/lib/lotus/commands/new/app.rb +116 -0
- data/lib/lotus/commands/new/container.rb +102 -0
- data/lib/lotus/commands/routes.rb +19 -2
- data/lib/lotus/commands/server.rb +16 -2
- data/lib/lotus/config/framework_configuration.rb +13 -1
- data/lib/lotus/configuration.rb +24 -76
- data/lib/lotus/container.rb +15 -2
- data/lib/lotus/environment.rb +43 -4
- data/lib/lotus/frameworks.rb +1 -0
- data/lib/lotus/generators/action/action_spec.minitest.tt +1 -1
- data/lib/lotus/generators/action/action_spec.rspec.tt +1 -1
- data/lib/lotus/generators/action/view_spec.minitest.tt +1 -1
- data/lib/lotus/generators/action/view_spec.rspec.tt +1 -1
- data/lib/lotus/generators/{slice → app}/.gitkeep.tt +0 -0
- data/lib/lotus/generators/{slice → app}/application.rb.tt +61 -23
- data/lib/lotus/generators/app/config/initializers/.gitkeep +0 -0
- data/lib/lotus/generators/{slice → app}/config/routes.rb.tt +0 -0
- data/lib/lotus/generators/app/favicon.ico +0 -0
- data/lib/lotus/generators/{slice → app}/templates/application.html.erb.tt +2 -1
- data/lib/lotus/generators/app/views/application_layout.rb.tt +7 -0
- data/lib/lotus/generators/application/app/.env.development.tt +1 -0
- data/lib/lotus/generators/application/app/.env.test.tt +1 -0
- data/lib/lotus/generators/application/app/Gemfile.tt +1 -0
- data/lib/lotus/generators/application/app/Rakefile.minitest.tt +1 -0
- data/lib/lotus/generators/application/app/Rakefile.rspec.tt +1 -0
- data/lib/lotus/generators/application/app/config/application.rb.tt +56 -18
- data/lib/lotus/generators/application/app/config/initializers/.gitkeep +0 -0
- data/lib/lotus/generators/application/app/favicon.ico +0 -0
- data/lib/lotus/generators/application/app/gitignore.tt +2 -0
- data/lib/lotus/generators/application/app/lotusrc.tt +3 -3
- data/lib/lotus/generators/application/app/spec_helper.rb.rspec.tt +5 -1
- data/lib/lotus/generators/application/app/templates/application.html.erb.tt +1 -0
- data/lib/lotus/generators/application/container/.env.development.tt +1 -0
- data/lib/lotus/generators/application/container/.env.test.tt +1 -0
- data/lib/lotus/generators/application/container/Gemfile.tt +1 -1
- data/lib/lotus/generators/application/container/Rakefile.minitest.tt +1 -0
- data/lib/lotus/generators/application/container/Rakefile.rspec.tt +1 -0
- data/lib/lotus/generators/application/container/config/initializers/.gitkeep +0 -0
- data/lib/lotus/generators/application/container/gitignore.tt +2 -0
- data/lib/lotus/generators/application/container/lib/chirp/mailers/.gitkeep +0 -0
- data/lib/lotus/generators/application/container/lib/chirp/mailers/templates/.gitkeep +0 -0
- data/lib/lotus/generators/application/container/lotusrc.tt +3 -3
- data/lib/lotus/generators/application/container/spec_helper.rb.rspec.tt +5 -1
- data/lib/lotus/generators/database_config.rb +17 -4
- data/lib/lotus/generators/generatable.rb +51 -0
- data/lib/lotus/generators/generator.rb +35 -0
- data/lib/lotus/generators/test_framework.rb +42 -0
- data/lib/lotus/loader.rb +43 -0
- data/lib/lotus/lotusrc.rb +50 -49
- data/lib/lotus/middleware.rb +28 -10
- data/lib/lotus/rake_helper.rb +68 -0
- data/lib/lotus/rake_tasks.rb +2 -0
- data/lib/lotus/rendering_policy.rb +2 -2
- data/lib/lotus/repositories/car_repository.rb +3 -0
- data/lib/lotus/repositories/name_repository.rb +3 -0
- data/lib/lotus/setup.rb +1 -3
- data/lib/lotus/static.rb +77 -0
- data/lib/lotus/templates/welcome.html.erb +7 -4
- data/lib/lotus/version.rb +1 -1
- data/lib/lotus/views/default.rb +2 -1
- data/lib/lotus/views/default_template_finder.rb +4 -3
- data/lotusrb.gemspec +11 -9
- metadata +79 -60
- data/lib/lotus/commands/generate.rb +0 -97
- data/lib/lotus/commands/new.rb +0 -43
- data/lib/lotus/config/assets.rb +0 -81
- data/lib/lotus/generators/abstract.rb +0 -31
- data/lib/lotus/generators/action.rb +0 -235
- data/lib/lotus/generators/app.rb +0 -39
- data/lib/lotus/generators/app/.gitkeep +0 -1
- data/lib/lotus/generators/application/app.rb +0 -129
- data/lib/lotus/generators/application/container.rb +0 -111
- data/lib/lotus/generators/mailer.rb +0 -112
- data/lib/lotus/generators/migration.rb +0 -58
- data/lib/lotus/generators/model.rb +0 -90
- data/lib/lotus/generators/slice.rb +0 -94
- data/lib/lotus/generators/slice/views/application_layout.rb.tt +0 -7
    
        data/lib/lotus/generators/app.rb
    DELETED
    
    | @@ -1,39 +0,0 @@ | |
| 1 | 
            -
            require 'shellwords'
         | 
| 2 | 
            -
            require 'lotus/generators/abstract'
         | 
| 3 | 
            -
            require 'lotus/generators/slice'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Lotus
         | 
| 6 | 
            -
              module Generators
         | 
| 7 | 
            -
                class App < Abstract
         | 
| 8 | 
            -
                  def initialize(command)
         | 
| 9 | 
            -
                    super
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    options.merge!(app_name_options)
         | 
| 12 | 
            -
                    @slice_generator = Slice.new(command)
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                    cli.class.source_root(source)
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  def start
         | 
| 18 | 
            -
                    @slice_generator.start
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
             | 
| 21 | 
            -
                  private
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  # @since 0.4.0
         | 
| 24 | 
            -
                  # @api private
         | 
| 25 | 
            -
                  def app_name_options
         | 
| 26 | 
            -
                    {
         | 
| 27 | 
            -
                      application: app_name,
         | 
| 28 | 
            -
                      application_base_url: application_base_url
         | 
| 29 | 
            -
                    }
         | 
| 30 | 
            -
                  end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                  # @since 0.4.0
         | 
| 33 | 
            -
                  # @api private
         | 
| 34 | 
            -
                  def application_base_url
         | 
| 35 | 
            -
                    options[:application_base_url] || "/#{app_name}"
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
            end
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            #
         | 
| @@ -1,129 +0,0 @@ | |
| 1 | 
            -
            require 'shellwords'
         | 
| 2 | 
            -
            require 'lotus/generators/abstract'
         | 
| 3 | 
            -
            require 'lotus/generators/database_config'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Lotus
         | 
| 6 | 
            -
              module Generators
         | 
| 7 | 
            -
                module Application
         | 
| 8 | 
            -
                  class App < Abstract
         | 
| 9 | 
            -
                    def initialize(command)
         | 
| 10 | 
            -
                      super
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                      @upcase_app_name      = app_name.to_env_s
         | 
| 13 | 
            -
                      @classified_app_name  = Utils::String.new(app_name).classify
         | 
| 14 | 
            -
                      @lotus_head           = options.fetch(:lotus_head)
         | 
| 15 | 
            -
                      @test                 = options[:test]
         | 
| 16 | 
            -
                      @database_config      = DatabaseConfig.new(options[:database], app_name)
         | 
| 17 | 
            -
                      @application_base_url = options[:application_base_url]
         | 
| 18 | 
            -
                      @lotus_model_version  = '~> 0.5'
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                      cli.class.source_root(source)
         | 
| 21 | 
            -
                    end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    def start
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                      opts      = {
         | 
| 26 | 
            -
                        app_name:             app_name,
         | 
| 27 | 
            -
                        upcase_app_name:      @upcase_app_name,
         | 
| 28 | 
            -
                        classified_app_name:  @classified_app_name,
         | 
| 29 | 
            -
                        application_base_url: @application_base_url,
         | 
| 30 | 
            -
                        lotus_head:           @lotus_head,
         | 
| 31 | 
            -
                        test:                 @test,
         | 
| 32 | 
            -
                        database:             @database_config.engine,
         | 
| 33 | 
            -
                        database_config:      @database_config.to_hash,
         | 
| 34 | 
            -
                        lotus_model_version:  @lotus_model_version,
         | 
| 35 | 
            -
                      }
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                      templates = {
         | 
| 38 | 
            -
                        'lotusrc.tt'                        => '.lotusrc',
         | 
| 39 | 
            -
                        '.env.tt'                           => '.env',
         | 
| 40 | 
            -
                        '.env.development.tt'               => '.env.development',
         | 
| 41 | 
            -
                        '.env.test.tt'                      => '.env.test',
         | 
| 42 | 
            -
                        'Gemfile.tt'                        => 'Gemfile',
         | 
| 43 | 
            -
                        'config.ru.tt'                      => 'config.ru',
         | 
| 44 | 
            -
                        'config/environment.rb.tt'          => 'config/environment.rb',
         | 
| 45 | 
            -
                        'lib/app_name.rb.tt'                => "lib/#{ app_name }.rb",
         | 
| 46 | 
            -
                        'lib/config/mapping.rb.tt'          => 'lib/config/mapping.rb',
         | 
| 47 | 
            -
                        'config/application.rb.tt'          => 'config/application.rb',
         | 
| 48 | 
            -
                        'config/routes.rb.tt'               => 'config/routes.rb',
         | 
| 49 | 
            -
                        'views/application_layout.rb.tt'    => 'app/views/application_layout.rb',
         | 
| 50 | 
            -
                        'templates/application.html.erb.tt' => 'app/templates/application.html.erb',
         | 
| 51 | 
            -
                      }
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                      empty_directories = [
         | 
| 54 | 
            -
                        "app/controllers",
         | 
| 55 | 
            -
                        "app/views",
         | 
| 56 | 
            -
                        "lib/#{ app_name }/entities",
         | 
| 57 | 
            -
                        "lib/#{ app_name }/repositories",
         | 
| 58 | 
            -
                        "lib/#{ app_name }/mailers",
         | 
| 59 | 
            -
                        "public/javascripts",
         | 
| 60 | 
            -
                        "public/stylesheets"
         | 
| 61 | 
            -
                      ]
         | 
| 62 | 
            -
             | 
| 63 | 
            -
                      empty_directories << if @database_config.sql?
         | 
| 64 | 
            -
                        "db/migrations"
         | 
| 65 | 
            -
                      else
         | 
| 66 | 
            -
                        "db"
         | 
| 67 | 
            -
                      end
         | 
| 68 | 
            -
             | 
| 69 | 
            -
                      # Add testing directories (spec/ is the default for both MiniTest and RSpec)
         | 
| 70 | 
            -
                      empty_directories << [
         | 
| 71 | 
            -
                        "spec/features",
         | 
| 72 | 
            -
                        "spec/controllers",
         | 
| 73 | 
            -
                        "spec/views"
         | 
| 74 | 
            -
                      ]
         | 
| 75 | 
            -
             | 
| 76 | 
            -
                      case options[:test]
         | 
| 77 | 
            -
                      when 'rspec'
         | 
| 78 | 
            -
                        templates.merge!(
         | 
| 79 | 
            -
                          'Rakefile.rspec.tt'           => 'Rakefile',
         | 
| 80 | 
            -
                          'rspec.rspec.tt'              => '.rspec',
         | 
| 81 | 
            -
                          'spec_helper.rb.rspec.tt'     => 'spec/spec_helper.rb',
         | 
| 82 | 
            -
                          'features_helper.rb.rspec.tt' => 'spec/features_helper.rb',
         | 
| 83 | 
            -
                          'capybara.rb.rspec.tt'        => 'spec/support/capybara.rb'
         | 
| 84 | 
            -
                        )
         | 
| 85 | 
            -
                      else # minitest (default)
         | 
| 86 | 
            -
                        templates.merge!(
         | 
| 87 | 
            -
                          'Rakefile.minitest.tt'           => 'Rakefile',
         | 
| 88 | 
            -
                          'spec_helper.rb.minitest.tt'     => 'spec/spec_helper.rb',
         | 
| 89 | 
            -
                          'features_helper.rb.minitest.tt' => 'spec/features_helper.rb'
         | 
| 90 | 
            -
                        )
         | 
| 91 | 
            -
                      end
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                      empty_directories << [
         | 
| 94 | 
            -
                        "spec/#{ app_name }/entities",
         | 
| 95 | 
            -
                        "spec/#{ app_name }/repositories",
         | 
| 96 | 
            -
                        "spec/#{ app_name }/mailers",
         | 
| 97 | 
            -
                        "spec/support"
         | 
| 98 | 
            -
                      ]
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                      if @database_config.sql?
         | 
| 101 | 
            -
                        templates.merge!(
         | 
| 102 | 
            -
                          'schema.sql.tt' => 'db/schema.sql'
         | 
| 103 | 
            -
                        )
         | 
| 104 | 
            -
                      end
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                      templates.each do |src, dst|
         | 
| 107 | 
            -
                        cli.template(source.join(src), target.join(dst), opts)
         | 
| 108 | 
            -
                      end
         | 
| 109 | 
            -
             | 
| 110 | 
            -
                      empty_directories.flatten.each do |dir|
         | 
| 111 | 
            -
                        gitkeep = '.gitkeep'
         | 
| 112 | 
            -
                        cli.template(source.join(gitkeep), target.join(dir, gitkeep), opts)
         | 
| 113 | 
            -
                      end
         | 
| 114 | 
            -
             | 
| 115 | 
            -
                      unless git_dir_present?
         | 
| 116 | 
            -
                        cli.template(source.join(@database_config.type == :file_system ? 'gitignore.tt' : '.gitignore'), target.join('.gitignore'), opts)
         | 
| 117 | 
            -
                        cli.run("git init #{Shellwords.escape(target)}", capture: true)
         | 
| 118 | 
            -
                      end
         | 
| 119 | 
            -
                    end
         | 
| 120 | 
            -
             | 
| 121 | 
            -
                    private
         | 
| 122 | 
            -
             | 
| 123 | 
            -
                    def git_dir_present?
         | 
| 124 | 
            -
                      File.directory?(source.join('.git'))
         | 
| 125 | 
            -
                    end
         | 
| 126 | 
            -
                  end
         | 
| 127 | 
            -
                end
         | 
| 128 | 
            -
              end
         | 
| 129 | 
            -
            end
         | 
| @@ -1,111 +0,0 @@ | |
| 1 | 
            -
            require 'shellwords'
         | 
| 2 | 
            -
            require 'lotus/generators/abstract'
         | 
| 3 | 
            -
            require 'lotus/generators/database_config'
         | 
| 4 | 
            -
            require 'lotus/generators/slice'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            module Lotus
         | 
| 7 | 
            -
              module Generators
         | 
| 8 | 
            -
                module Application
         | 
| 9 | 
            -
                  class Container < Abstract
         | 
| 10 | 
            -
                    def initialize(command)
         | 
| 11 | 
            -
                      super
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                      @slice_generator      = Slice.new(command)
         | 
| 14 | 
            -
                      @database_config      = DatabaseConfig.new(options[:database], app_name)
         | 
| 15 | 
            -
                      @lotus_head           = options.fetch(:lotus_head)
         | 
| 16 | 
            -
                      @test                 = options[:test]
         | 
| 17 | 
            -
                      @lotus_model_version  = '~> 0.5'
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                      cli.class.source_root(source)
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                    def start
         | 
| 23 | 
            -
                      opts      = {
         | 
| 24 | 
            -
                        app_name:             app_name,
         | 
| 25 | 
            -
                        lotus_head:           @lotus_head,
         | 
| 26 | 
            -
                        test:                 @test,
         | 
| 27 | 
            -
                        database:             @database_config.engine,
         | 
| 28 | 
            -
                        database_config:      @database_config.to_hash,
         | 
| 29 | 
            -
                        lotus_model_version:  @lotus_model_version,
         | 
| 30 | 
            -
                      }
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                      templates = {
         | 
| 33 | 
            -
                        'lotusrc.tt'               => '.lotusrc',
         | 
| 34 | 
            -
                        '.env.tt'                  => '.env',
         | 
| 35 | 
            -
                        '.env.development.tt'      => '.env.development',
         | 
| 36 | 
            -
                        '.env.test.tt'             => '.env.test',
         | 
| 37 | 
            -
                        'Gemfile.tt'               => 'Gemfile',
         | 
| 38 | 
            -
                        'config.ru.tt'             => 'config.ru',
         | 
| 39 | 
            -
                        'config/environment.rb.tt' => 'config/environment.rb',
         | 
| 40 | 
            -
                        'lib/app_name.rb.tt'       => "lib/#{ app_name }.rb",
         | 
| 41 | 
            -
                        'lib/config/mapping.rb.tt' => 'lib/config/mapping.rb',
         | 
| 42 | 
            -
                      }
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                      empty_directories = [
         | 
| 45 | 
            -
                        "lib/#{ app_name }/entities",
         | 
| 46 | 
            -
                        "lib/#{ app_name }/repositories",
         | 
| 47 | 
            -
                        "lib/#{ app_name }/mailers"
         | 
| 48 | 
            -
                      ]
         | 
| 49 | 
            -
             | 
| 50 | 
            -
                      empty_directories << if @database_config.sql?
         | 
| 51 | 
            -
                        "db/migrations"
         | 
| 52 | 
            -
                      else
         | 
| 53 | 
            -
                        "db"
         | 
| 54 | 
            -
                      end
         | 
| 55 | 
            -
             | 
| 56 | 
            -
                      case options[:test]
         | 
| 57 | 
            -
                      when 'rspec'
         | 
| 58 | 
            -
                        templates.merge!(
         | 
| 59 | 
            -
                          'Rakefile.rspec.tt'           => 'Rakefile',
         | 
| 60 | 
            -
                          'rspec.rspec.tt'              => '.rspec',
         | 
| 61 | 
            -
                          'spec_helper.rb.rspec.tt'     => 'spec/spec_helper.rb',
         | 
| 62 | 
            -
                          'features_helper.rb.rspec.tt' => 'spec/features_helper.rb',
         | 
| 63 | 
            -
                          'capybara.rb.rspec.tt'        => 'spec/support/capybara.rb'
         | 
| 64 | 
            -
                        )
         | 
| 65 | 
            -
                      else # minitest (default)
         | 
| 66 | 
            -
                        templates.merge!(
         | 
| 67 | 
            -
                          'Rakefile.minitest.tt'           => 'Rakefile',
         | 
| 68 | 
            -
                          'spec_helper.rb.minitest.tt'     => 'spec/spec_helper.rb',
         | 
| 69 | 
            -
                          'features_helper.rb.minitest.tt' => 'spec/features_helper.rb'
         | 
| 70 | 
            -
                        )
         | 
| 71 | 
            -
                      end
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                      if @database_config.sql?
         | 
| 74 | 
            -
                        templates.merge!(
         | 
| 75 | 
            -
                          'schema.sql.tt' => 'db/schema.sql'
         | 
| 76 | 
            -
                        )
         | 
| 77 | 
            -
                      end
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                      empty_directories << [
         | 
| 80 | 
            -
                        "spec/#{ app_name }/entities",
         | 
| 81 | 
            -
                        "spec/#{ app_name }/repositories",
         | 
| 82 | 
            -
                        "spec/#{ app_name }/mailers",
         | 
| 83 | 
            -
                        "spec/support"
         | 
| 84 | 
            -
                      ]
         | 
| 85 | 
            -
             | 
| 86 | 
            -
                      templates.each do |src, dst|
         | 
| 87 | 
            -
                        cli.template(source.join(src), target.join(dst), opts)
         | 
| 88 | 
            -
                      end
         | 
| 89 | 
            -
             | 
| 90 | 
            -
                      empty_directories.flatten.each do |dir|
         | 
| 91 | 
            -
                        gitkeep = '.gitkeep'
         | 
| 92 | 
            -
                        cli.template(source.join(gitkeep), target.join(dir, gitkeep), opts)
         | 
| 93 | 
            -
                      end
         | 
| 94 | 
            -
             | 
| 95 | 
            -
                      unless git_dir_present?
         | 
| 96 | 
            -
                        cli.template(source.join(@database_config.type == :file_system ? 'gitignore.tt' : '.gitignore'), target.join('.gitignore'), opts)
         | 
| 97 | 
            -
                        cli.run("git init #{Shellwords.escape(target)}", capture: true)
         | 
| 98 | 
            -
                      end
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                      @slice_generator.start
         | 
| 101 | 
            -
                    end
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                    private
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                    def git_dir_present?
         | 
| 106 | 
            -
                      File.directory?(source.join('.git'))
         | 
| 107 | 
            -
                    end
         | 
| 108 | 
            -
                  end
         | 
| 109 | 
            -
                end
         | 
| 110 | 
            -
              end
         | 
| 111 | 
            -
            end
         | 
| @@ -1,112 +0,0 @@ | |
| 1 | 
            -
            require 'lotus/generators/abstract'
         | 
| 2 | 
            -
            require 'lotus/utils/string'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Lotus
         | 
| 5 | 
            -
              module Generators
         | 
| 6 | 
            -
                # @since 0.5.0
         | 
| 7 | 
            -
                # @api private
         | 
| 8 | 
            -
                class Mailer < Abstract
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  # @since 0.5.0
         | 
| 11 | 
            -
                  # @api private
         | 
| 12 | 
            -
                  TXT_FORMAT  = '.txt'.freeze
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  # @since 0.5.0
         | 
| 15 | 
            -
                  # @api private
         | 
| 16 | 
            -
                  HTML_FORMAT  = '.html'.freeze
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  # @since 0.5.0
         | 
| 19 | 
            -
                  # @api private
         | 
| 20 | 
            -
                  DEFAULT_ENGINE = 'erb'.freeze
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  # @since 0.5.0
         | 
| 23 | 
            -
                  # @api private
         | 
| 24 | 
            -
                  DEFAULT_FROM = "'<from>'".freeze
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                  # @since 0.5.0
         | 
| 27 | 
            -
                  # @api private
         | 
| 28 | 
            -
                  DEFAULT_TO = "'<to>'".freeze
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  # @since 0.5.0
         | 
| 31 | 
            -
                  # @api private
         | 
| 32 | 
            -
                  DEFAULT_SUBJECT = "'Hello'".freeze
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                  # @since 0.5.0
         | 
| 35 | 
            -
                  # @api private
         | 
| 36 | 
            -
                  def initialize(command)
         | 
| 37 | 
            -
                    super
         | 
| 38 | 
            -
             | 
| 39 | 
            -
                    @mailer_name = Utils::String.new(name).classify
         | 
| 40 | 
            -
                    cli.class.source_root(source)
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
                  # @since 0.5.0
         | 
| 44 | 
            -
                  # @api private
         | 
| 45 | 
            -
                  def start
         | 
| 46 | 
            -
                    assert_mailer!
         | 
| 47 | 
            -
             | 
| 48 | 
            -
                    opts = {
         | 
| 49 | 
            -
                      mailer:  @mailer_name,
         | 
| 50 | 
            -
                      from:    DEFAULT_FROM,
         | 
| 51 | 
            -
                      to:      DEFAULT_TO,
         | 
| 52 | 
            -
                      subject: DEFAULT_SUBJECT,
         | 
| 53 | 
            -
                    }
         | 
| 54 | 
            -
             | 
| 55 | 
            -
                    templates = {
         | 
| 56 | 
            -
                      'mailer_spec.rb.tt' => _mailer_spec_path,
         | 
| 57 | 
            -
                      'mailer.rb.tt'      => _mailer_path,
         | 
| 58 | 
            -
                      'template.txt.tt'   => _txt_template_path,
         | 
| 59 | 
            -
                      'template.html.tt'  => _html_template_path,
         | 
| 60 | 
            -
                    }
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                    templates.each do |src, dst|
         | 
| 63 | 
            -
                      cli.template(source.join(src), target.join(dst), opts)
         | 
| 64 | 
            -
                    end
         | 
| 65 | 
            -
                  end
         | 
| 66 | 
            -
             | 
| 67 | 
            -
                  # @since 0.5.0
         | 
| 68 | 
            -
                  # @api private
         | 
| 69 | 
            -
                  def assert_mailer!
         | 
| 70 | 
            -
                    if @mailer_name.nil? || @mailer_name.empty?
         | 
| 71 | 
            -
                      raise Lotus::Commands::Generate::Error.new("Missing mailer name")
         | 
| 72 | 
            -
                    end
         | 
| 73 | 
            -
                  end
         | 
| 74 | 
            -
             | 
| 75 | 
            -
                  # @since 0.5.0
         | 
| 76 | 
            -
                  # @api private
         | 
| 77 | 
            -
                  def _mailer_path
         | 
| 78 | 
            -
                    core_root.join('mailers', "#{ name }.rb").to_s
         | 
| 79 | 
            -
                  end
         | 
| 80 | 
            -
             | 
| 81 | 
            -
                  # @since 0.5.0
         | 
| 82 | 
            -
                  # @api private
         | 
| 83 | 
            -
                  def _mailer_spec_path
         | 
| 84 | 
            -
                    spec_root.join(::File.basename(Dir.getwd), 'mailers', "#{ name }_spec.rb")
         | 
| 85 | 
            -
                  end
         | 
| 86 | 
            -
             | 
| 87 | 
            -
                  # @since 0.5.0
         | 
| 88 | 
            -
                  # @api private
         | 
| 89 | 
            -
                  def _txt_template_path
         | 
| 90 | 
            -
                    __template_path(TXT_FORMAT)
         | 
| 91 | 
            -
                  end
         | 
| 92 | 
            -
             | 
| 93 | 
            -
                  # @since 0.5.0
         | 
| 94 | 
            -
                  # @api private
         | 
| 95 | 
            -
                  def _html_template_path
         | 
| 96 | 
            -
                    __template_path(HTML_FORMAT)
         | 
| 97 | 
            -
                  end
         | 
| 98 | 
            -
             | 
| 99 | 
            -
                  # @since 0.5.0
         | 
| 100 | 
            -
                  # @api private
         | 
| 101 | 
            -
                  def __template_path(format)
         | 
| 102 | 
            -
                    core_root.join('mailers', 'templates', "#{ name }#{ format }.#{ DEFAULT_ENGINE }")
         | 
| 103 | 
            -
                  end
         | 
| 104 | 
            -
             | 
| 105 | 
            -
                  # @since 0.5.0
         | 
| 106 | 
            -
                  # @api private
         | 
| 107 | 
            -
                  def name
         | 
| 108 | 
            -
                    Utils::String.new(app_name || super).underscore
         | 
| 109 | 
            -
                  end
         | 
| 110 | 
            -
                end
         | 
| 111 | 
            -
              end
         | 
| 112 | 
            -
            end
         | 
| @@ -1,58 +0,0 @@ | |
| 1 | 
            -
            require 'lotus/generators/abstract'
         | 
| 2 | 
            -
            require 'lotus/utils/string'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            module Lotus
         | 
| 5 | 
            -
              module Generators
         | 
| 6 | 
            -
                # @since 0.4.0
         | 
| 7 | 
            -
                # @api private
         | 
| 8 | 
            -
                class Migration < Abstract
         | 
| 9 | 
            -
                  # @since 0.4.0
         | 
| 10 | 
            -
                  # @api private
         | 
| 11 | 
            -
                  #
         | 
| 12 | 
            -
                  # @example
         | 
| 13 | 
            -
                  #   20150612160502
         | 
| 14 | 
            -
                  TIMESTAMP_FORMAT = '%Y%m%d%H%M%S'.freeze
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                  # @since 0.4.0
         | 
| 17 | 
            -
                  # @api private
         | 
| 18 | 
            -
                  #
         | 
| 19 | 
            -
                  # @example
         | 
| 20 | 
            -
                  #   20150612160502_create_books.rb
         | 
| 21 | 
            -
                  FILENAME = '%{timestamp}_%{name}.rb'.freeze
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  # @since 0.4.0
         | 
| 24 | 
            -
                  # @api private
         | 
| 25 | 
            -
                  def initialize(command)
         | 
| 26 | 
            -
                    super
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                    timestamp = Time.now.utc.strftime(TIMESTAMP_FORMAT)
         | 
| 29 | 
            -
                    filename  = FILENAME % { timestamp: timestamp, name: name }
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                    env.require_application_environment
         | 
| 32 | 
            -
                    @destination = Lotus::Model.configuration.migrations.join(filename)
         | 
| 33 | 
            -
             | 
| 34 | 
            -
                    cli.class.source_root(source)
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                  # @since 0.4.0
         | 
| 38 | 
            -
                  # @api private
         | 
| 39 | 
            -
                  def start
         | 
| 40 | 
            -
                    templates = {
         | 
| 41 | 
            -
                      'migration.rb.tt' => @destination
         | 
| 42 | 
            -
                    }
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                    templates.each do |src, dst|
         | 
| 45 | 
            -
                      cli.template(source.join(src), target.join(dst), {})
         | 
| 46 | 
            -
                    end
         | 
| 47 | 
            -
                  end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                  private
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                  # @since 0.4.0
         | 
| 52 | 
            -
                  # @api private
         | 
| 53 | 
            -
                  def name
         | 
| 54 | 
            -
                    Utils::String.new(app_name || super).underscore
         | 
| 55 | 
            -
                  end
         | 
| 56 | 
            -
                end
         | 
| 57 | 
            -
              end
         | 
| 58 | 
            -
            end
         |