From e37e0968a3135a552dce4ae9173a7832f4c4c631 Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Fri, 6 Oct 2017 15:16:07 +0300 Subject: [PATCH 01/12] =?UTF-8?q?KBP-125=20#time=204h=20-=20Integrate?= =?UTF-8?q?=C2=A0recipient=5Finterceptor=C2=A0GEM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/cybele/app_builder.rb | 22 ++++++++++++++++++++++ lib/cybele/generators/app_generator.rb | 16 ++++++++++++++++ templates/cybele_Gemfile.erb | 3 +++ 3 files changed, 41 insertions(+) create mode 100644 templates/cybele_Gemfile.erb diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index c80b4c9..2a50d13 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -17,6 +17,11 @@ def remove_readme_rdoc force: true end + def add_gems + # Add gems + append_file('Gemfile', template_content('cybele_Gemfile.erb')) + end + def add_editor_config copy_file 'editorconfig', '.editorconfig' end @@ -34,5 +39,22 @@ def use_postgres_config_template def create_database bundle_command 'exec rake db:create db:migrate' end + + def configure_recipient_interceptor + config = <<-RUBY + Mail.register_interceptor RecipientInterceptor.new(Settings.email.sandbox, subject_prefix: '[STAGING]') + RUBY + configure_environment 'staging', config + end + + def setup_staging_environment + run 'cp config/environments/production.rb config/environments/staging.rb' + end + + private + + def configure_environment(rails_env, config) + inject_into_file("config/environments/#{rails_env}.rb", "\n#{config}", before: "\nend") + end end end diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index 9ce6784..2f25144 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -57,6 +57,12 @@ def initialize(*args) @options.freeze end + def customize_gemfile + say 'Customize gem file', :green + build :add_gems + bundle_command 'install --binstubs=bin/stubs' + end + def setup_editor_config say 'Add .editor_config file', :green build :add_editor_config @@ -94,6 +100,16 @@ def setup_responders build :configure_responders end + def setup_staging_environment + say 'Setting up the staging environment' + build :setup_staging_environment + end + + def configure_recipient_interceptor + say 'Setup mail settings with recipient_interceptor in staging', :green + build :configure_recipient_interceptor + end + def goodbye say 'Congratulations! That\'s all...', :green end diff --git a/templates/cybele_Gemfile.erb b/templates/cybele_Gemfile.erb new file mode 100644 index 0000000..4034681 --- /dev/null +++ b/templates/cybele_Gemfile.erb @@ -0,0 +1,3 @@ + +# For never accidentally send emails to real people from staging environment. +gem 'recipient_interceptor', '~> 0.1.2' \ No newline at end of file From 08199a0542834e0351afa44614bea376b5ce109b Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Fri, 6 Oct 2017 16:29:05 +0300 Subject: [PATCH 02/12] =?UTF-8?q?KBP-126=20#time=2040m=20-=20Integrate?= =?UTF-8?q?=C2=A0config=C2=A0GEM=20and=20fill=20settings.yml=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/cybele/app_builder.rb | 43 ++++++++++++++++++++++++++ lib/cybele/generators/app_generator.rb | 12 ++++++- templates/cybele_Gemfile.erb | 5 ++- 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 2a50d13..f87fa2d 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -51,6 +51,49 @@ def setup_staging_environment run 'cp config/environments/production.rb config/environments/staging.rb' end + def generate_config + generate 'config:install' + run 'cp config/settings/development.yml config/settings/staging.yml' + end + + def fill_settings_yml + config = <<-YML +email: + sandbox: sandbox@#{app_name}.com + noreply: no-reply@#{app_name}.com + admin: admin@#{app_name}.com + +basic_auth: + username: #{app_name} + password: #{app_name} + +sidekiq: + username: #{app_name} + password: #{app_name} + +root_path: <%= ENV['ROOT_PATH'] %> + +smtp: + address: <%= ENV['SMTP_ADDRESS'] %> + port: 587 + enable_starttls_auto: true + user_name: <%= ENV['SMTP_USER_NAME'] %> + password: <%= ENV['SMTP_PASSWORD'] %> + authentication: 'plain' + +AWS: + S3: + bucket: <%= ENV['S3_BUCKET_NAME'] %> + access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> + secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> + aws_url: http://<%= ENV['AWS_RAW_URL'] %> + aws_raw_url: <%= ENV['AWS_RAW_URL'] %> + # Bucket region should be ireland for this setting + end_point: s3-eu-west-1.amazonaws.com + YML + prepend_file 'config/settings.yml', config + end + private def configure_environment(rails_env, config) diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index 2f25144..ff806f4 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -101,7 +101,7 @@ def setup_responders end def setup_staging_environment - say 'Setting up the staging environment' + say 'Setting up the staging environment', :green build :setup_staging_environment end @@ -110,6 +110,16 @@ def configure_recipient_interceptor build :configure_recipient_interceptor end + def setup_config + say 'Generate config', :green + build :generate_config + end + + def fill_settings_yml + say 'Fill to settings.yml file', :green + build :fill_settings_yml + end + def goodbye say 'Congratulations! That\'s all...', :green end diff --git a/templates/cybele_Gemfile.erb b/templates/cybele_Gemfile.erb index 4034681..22c542a 100644 --- a/templates/cybele_Gemfile.erb +++ b/templates/cybele_Gemfile.erb @@ -1,3 +1,6 @@ # For never accidentally send emails to real people from staging environment. -gem 'recipient_interceptor', '~> 0.1.2' \ No newline at end of file +gem 'recipient_interceptor', '~> 0.1.2' + +# RailsConfig helps you easily manage environment specific Rails settings in an easy and usable manner +gem 'config', '~> 1.5' \ No newline at end of file From 6142c7a1a5dbdcc10e375e9be6b540df1d37648c Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Fri, 6 Oct 2017 17:17:10 +0300 Subject: [PATCH 03/12] KBP-128 #time 20m - Integrate rollbar GEM --- README.md | 8 +++++++- lib/cybele/app_builder.rb | 4 ++++ lib/cybele/generators/app_generator.rb | 5 +++++ templates/cybele_Gemfile.erb | 5 ++++- 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a934c79..3bcae73 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,13 @@ cybele project_name When the initialization is completed, there will be some required settings. * Set .env.local variables -* Set access_token in config/initializers/rollbar.rb +* Set ENV['ROLLBAR_ACCESS_TOKEN'] for Rollbar. +* If Sidekiq will be use, you must open sidekiq option in config/initializers/rollbar.rb like the following: + ```ruby + config.use_sidekiq 'queue' => 'default' + ``` +* If you don't want to use Rollbar in development environment, you can disable for development environment in + in config/initializers/rollbar.rb * Set default values for is_active, time_zone variable using in User and Admin model migrations db/migrate/*.rb * Change username and password in config/settings.yml * In public folder run this command ln -s ../VERSION.txt VERSION.txt diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index f87fa2d..d1d0163 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -94,6 +94,10 @@ def fill_settings_yml prepend_file 'config/settings.yml', config end + def generate_rollbar + generate 'rollbar' + end + private def configure_environment(rails_env, config) diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index ff806f4..a196080 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -120,6 +120,11 @@ def fill_settings_yml build :fill_settings_yml end + def setup_rollbar + say 'Generate rollbar', :green + build :generate_rollbar + end + def goodbye say 'Congratulations! That\'s all...', :green end diff --git a/templates/cybele_Gemfile.erb b/templates/cybele_Gemfile.erb index 22c542a..83f7c7d 100644 --- a/templates/cybele_Gemfile.erb +++ b/templates/cybele_Gemfile.erb @@ -3,4 +3,7 @@ gem 'recipient_interceptor', '~> 0.1.2' # RailsConfig helps you easily manage environment specific Rails settings in an easy and usable manner -gem 'config', '~> 1.5' \ No newline at end of file +gem 'config', '~> 1.5' + +# Rollbar is an error tracking service. +gem 'rollbar', '~> 2.15', '>= 2.15.4' \ No newline at end of file From 2dd6b15ea605f53e9a921bd4915571ba36977c32 Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Fri, 20 Oct 2017 10:06:51 +0300 Subject: [PATCH 04/12] KBP-127 #time 40m - simple_form gem was integrated --- lib/cybele/app_builder.rb | 14 +++++++++++ lib/cybele/generators/app_generator.rb | 26 +++++++++++++++++++++ templates/config/locales/simple_form.tr.yml | 17 ++++++++++++++ templates/cybele_Gemfile.erb | 5 +++- 4 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 templates/config/locales/simple_form.tr.yml diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index d1d0163..21e4aad 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -98,6 +98,20 @@ def generate_rollbar generate 'rollbar' end + def generate_simple_form + generate 'simple_form:install --bootstrap --force' + copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' + copy_file 'config/locales/tr.yml', 'config/locales/tr.yml' + end + + # Copy files + def copy_files + # Locale files + say 'Coping files..' + remove_file 'config/locales/simple_form.en.yml', force: true + copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' + end + private def configure_environment(rails_env, config) diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index a196080..0767120 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -57,6 +57,27 @@ def initialize(*args) @options.freeze end + def finish_template + invoke :customization + super + end + + def customization + invoke :customize_gemfile + invoke :setup_editor_config + invoke :setup_ruby_version + invoke :remove_files_we_dont_need + invoke :setup_database + invoke :setup_sidekiq + invoke :setup_responders + invoke :setup_staging_environment + invoke :configure_recipient_interceptor + invoke :setup_config + invoke :fill_settings_yml + invoke :setup_rollbar + invoke :setup_simple_form + end + def customize_gemfile say 'Customize gem file', :green build :add_gems @@ -125,6 +146,11 @@ def setup_rollbar build :generate_rollbar end + def setup_simple_form + say 'Generate simple form files', :green + build :generate_simple_form + end + def goodbye say 'Congratulations! That\'s all...', :green end diff --git a/templates/config/locales/simple_form.tr.yml b/templates/config/locales/simple_form.tr.yml new file mode 100644 index 0000000..c1e1f12 --- /dev/null +++ b/templates/config/locales/simple_form.tr.yml @@ -0,0 +1,17 @@ +--- +tr: + simple_form: + "yes": 'Evet' + "no": 'Hayır' + required: + text: 'zorunlu' + mark: '*' + error_notification: + default_message: "Lütfen aşağıdaki problemleri gözden geçiriniz:" + hints: + user: + new: + password: 'En az 8 karakter olmalıdır' +# labels: +# defaults: +# password: 'Password' \ No newline at end of file diff --git a/templates/cybele_Gemfile.erb b/templates/cybele_Gemfile.erb index 83f7c7d..6cf6637 100644 --- a/templates/cybele_Gemfile.erb +++ b/templates/cybele_Gemfile.erb @@ -6,4 +6,7 @@ gem 'recipient_interceptor', '~> 0.1.2' gem 'config', '~> 1.5' # Rollbar is an error tracking service. -gem 'rollbar', '~> 2.15', '>= 2.15.4' \ No newline at end of file +gem 'rollbar', '~> 2.15', '>= 2.15.4' + +# Simple Form aims to be as flexible as possible while helping you with powerful components to create your forms. +gem 'simple_form', '~> 3.5' \ No newline at end of file From 823cda746775e64e9678fae2e38fe5a0c16f5720 Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Fri, 20 Oct 2017 12:08:05 +0300 Subject: [PATCH 05/12] KBP-127 #time 1h - Test were written for config gem, simple_form gem, rollbar gem, recipient_interceptor gem and staging environment --- lib/cybele/app_builder.rb | 1 - spec/features/new_default_project_spec.rb | 47 +++++++++++++++++++ spec/features/new_not_default_project_spec.rb | 47 +++++++++++++++++++ 3 files changed, 94 insertions(+), 1 deletion(-) diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 21e4aad..4156d00 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -101,7 +101,6 @@ def generate_rollbar def generate_simple_form generate 'simple_form:install --bootstrap --force' copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' - copy_file 'config/locales/tr.yml', 'config/locales/tr.yml' end # Copy files diff --git a/spec/features/new_default_project_spec.rb b/spec/features/new_default_project_spec.rb index 48d4ee1..4ed85b5 100644 --- a/spec/features/new_default_project_spec.rb +++ b/spec/features/new_default_project_spec.rb @@ -66,4 +66,51 @@ expect(locale_file).to match('update:') expect(locale_file).to match('destroy:') end + + it 'uses rollbar' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'rollbar'/) + + config_file = content('config/initializers/rollbar.rb') + expect(config_file).to match(/^Rollbar.configure/) + end + + it 'uses config and staging file' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'config'/) + + config_development_file = content('config/environments/development.rb') + expect(config_development_file).to match(/^Rails.application.configure/) + + config_staging_file = content('config/environments/staging.rb') + expect(config_staging_file).to match(/^Rails.application.configure/) + + config_production_file = content('config/environments/production.rb') + expect(config_production_file).to match(/^Rails.application.configure/) + + config_test_file = content('config/environments/test.rb') + expect(config_test_file).to match(/^Rails.application.configure/) + end + + it 'uses recipient_interceptor' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'recipient_interceptor'/) + + config_staging_file = content('config/environments/staging.rb') + expect(config_staging_file).to match('RecipientInterceptor.new') + end + + it 'uses simple_form' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'simple_form'/) + + config_simple_form_file = content('config/initializers/simple_form.rb') + expect(config_simple_form_file).to match(/^SimpleForm.setup/) + + simple_form_bootstrap_file = content('config/initializers/simple_form_bootstrap.rb') + expect(simple_form_bootstrap_file).to match(/^SimpleForm.setup/) + + simple_form_tr_yml_file = content('config/locales/simple_form.tr.yml') + expect(simple_form_tr_yml_file).to match('simple_form') + end end diff --git a/spec/features/new_not_default_project_spec.rb b/spec/features/new_not_default_project_spec.rb index 1cea4ec..da691b3 100644 --- a/spec/features/new_not_default_project_spec.rb +++ b/spec/features/new_not_default_project_spec.rb @@ -57,4 +57,51 @@ expect(locale_file).to match('update:') expect(locale_file).to match('destroy:') end + + it 'uses rollbar' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'rollbar'/) + + config_file = content('config/initializers/rollbar.rb') + expect(config_file).to match(/^Rollbar.configure/) + end + + it 'uses config and staging file' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'config'/) + + config_development_file = content('config/environments/development.rb') + expect(config_development_file).to match(/^Rails.application.configure/) + + config_staging_file = content('config/environments/staging.rb') + expect(config_staging_file).to match(/^Rails.application.configure/) + + config_production_file = content('config/environments/production.rb') + expect(config_production_file).to match(/^Rails.application.configure/) + + config_test_file = content('config/environments/test.rb') + expect(config_test_file).to match(/^Rails.application.configure/) + end + + it 'uses recipient_interceptor' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'recipient_interceptor'/) + + config_staging_file = content('config/environments/staging.rb') + expect(config_staging_file).to match('RecipientInterceptor.new') + end + + it 'uses simple_form' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match(/^gem 'simple_form'/) + + config_simple_form_file = content('config/initializers/simple_form.rb') + expect(config_simple_form_file).to match(/^SimpleForm.setup/) + + simple_form_bootstrap_file = content('config/initializers/simple_form_bootstrap.rb') + expect(simple_form_bootstrap_file).to match(/^SimpleForm.setup/) + + simple_form_tr_yml_file = content('config/locales/simple_form.tr.yml') + expect(simple_form_tr_yml_file).to match('simple_form') + end end From d97dd543c811d93c1890cf54e0c32a272bd76a0d Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Fri, 20 Oct 2017 14:23:57 +0300 Subject: [PATCH 06/12] KBP-136 #time 30m - Test were written for staging secret_key_base and secret_key_base was added to secret.yml file for staging --- lib/cybele/app_builder.rb | 9 +++++++++ lib/cybele/generators/app_generator.rb | 6 ++++++ spec/features/new_default_project_spec.rb | 5 +++++ spec/features/new_not_default_project_spec.rb | 5 +++++ 4 files changed, 25 insertions(+) diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 4156d00..372dd24 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -103,6 +103,15 @@ def generate_simple_form copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' end + def add_staging_secret_key_to_secrets_yml + config = <<-YML + +staging: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> + YML + append_file 'config/secrets.yml', config + end + # Copy files def copy_files # Locale files diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index 0767120..af478d3 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -76,6 +76,7 @@ def customization invoke :fill_settings_yml invoke :setup_rollbar invoke :setup_simple_form + invoke :add_staging_secret_key end def customize_gemfile @@ -151,6 +152,11 @@ def setup_simple_form build :generate_simple_form end + def add_staging_secret_key + say 'Add staging secret key to secret.yml file', :green + build :add_staging_secret_key_to_secrets_yml + end + def goodbye say 'Congratulations! That\'s all...', :green end diff --git a/spec/features/new_default_project_spec.rb b/spec/features/new_default_project_spec.rb index 4ed85b5..b1e1a7a 100644 --- a/spec/features/new_default_project_spec.rb +++ b/spec/features/new_default_project_spec.rb @@ -113,4 +113,9 @@ simple_form_tr_yml_file = content('config/locales/simple_form.tr.yml') expect(simple_form_tr_yml_file).to match('simple_form') end + + it 'make control secret_key_base for staging' do + secret_file = content('config/secrets.yml') + expect(secret_file).to match('staging') + end end diff --git a/spec/features/new_not_default_project_spec.rb b/spec/features/new_not_default_project_spec.rb index da691b3..47cdb85 100644 --- a/spec/features/new_not_default_project_spec.rb +++ b/spec/features/new_not_default_project_spec.rb @@ -104,4 +104,9 @@ simple_form_tr_yml_file = content('config/locales/simple_form.tr.yml') expect(simple_form_tr_yml_file).to match('simple_form') end + + it 'make control secret_key_base for staging' do + secret_file = content('config/secrets.yml') + expect(secret_file).to match('staging') + end end From 6ae4d7bb8aae3fc0a3cc147576cabd45687026de Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Tue, 24 Oct 2017 14:45:07 +0300 Subject: [PATCH 07/12] KBP-127 #time 3h - Code was improved and simple_form gem was moved to optional choose --- README.md | 14 +++-- bin/build_app | 2 +- lib/cybele/app_builder.rb | 57 ++++--------------- lib/cybele/generators/app_generator.rb | 34 ++++------- spec/features/new_not_default_project_spec.rb | 17 ++---- templates/{cybele_Gemfile.erb => Gemfile.erb} | 3 - templates/secrets.yml.erb | 3 + templates/settings.yml.erb | 14 +++++ templates/simple_form_Gemfile.erb | 3 + templates/staging.rb | 2 + 10 files changed, 60 insertions(+), 89 deletions(-) rename templates/{cybele_Gemfile.erb => Gemfile.erb} (69%) create mode 100644 templates/secrets.yml.erb create mode 100644 templates/settings.yml.erb create mode 100644 templates/simple_form_Gemfile.erb create mode 100644 templates/staging.rb diff --git a/README.md b/README.md index 3bcae73..628ffa3 100644 --- a/README.md +++ b/README.md @@ -20,10 +20,10 @@ Before generating your application, you will need: First you should install the cybele gem than you can use it for creating new gem. -```ruby -gem install cybele -cybele project_name -``` + ```ruby + gem install cybele + cybele project_name + ``` When the initialization is completed, there will be some required settings. @@ -31,10 +31,14 @@ When the initialization is completed, there will be some required settings. * Set ENV['ROLLBAR_ACCESS_TOKEN'] for Rollbar. * If Sidekiq will be use, you must open sidekiq option in config/initializers/rollbar.rb like the following: ```ruby - config.use_sidekiq 'queue' => 'default' + config.use_sidekiq 'queue' => 'default' ``` * If you don't want to use Rollbar in development environment, you can disable for development environment in in config/initializers/rollbar.rb +* If you want to sign up email notification in staging environment, you can add mails like the following: + ```ruby + [Settings.email.sandbox, 'user1@example.com', 'user2@example.com'] + ``` * Set default values for is_active, time_zone variable using in User and Admin model migrations db/migrate/*.rb * Change username and password in config/settings.yml * In public folder run this command ln -s ../VERSION.txt VERSION.txt diff --git a/bin/build_app b/bin/build_app index cd07503..39edce0 100755 --- a/bin/build_app +++ b/bin/build_app @@ -15,4 +15,4 @@ export DISABLE_SPRING=1 # Create dummy_app echo "Create dummy_app" -cybele tmp/dummy_app --skip-create-database \ No newline at end of file +cybele tmp/dummy_app --no-skip-ask \ No newline at end of file diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 372dd24..f89407a 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -19,7 +19,12 @@ def remove_readme_rdoc def add_gems # Add gems - append_file('Gemfile', template_content('cybele_Gemfile.erb')) + append_file('Gemfile', template_content('Gemfile.erb')) + end + + def add_simple_form_gem + # Add simple_form gems + append_file('Gemfile', template_content('simple_form_Gemfile.erb')) end def add_editor_config @@ -41,10 +46,7 @@ def create_database end def configure_recipient_interceptor - config = <<-RUBY - Mail.register_interceptor RecipientInterceptor.new(Settings.email.sandbox, subject_prefix: '[STAGING]') - RUBY - configure_environment 'staging', config + configure_environment 'staging', template_content('staging.rb') end def setup_staging_environment @@ -57,41 +59,7 @@ def generate_config end def fill_settings_yml - config = <<-YML -email: - sandbox: sandbox@#{app_name}.com - noreply: no-reply@#{app_name}.com - admin: admin@#{app_name}.com - -basic_auth: - username: #{app_name} - password: #{app_name} - -sidekiq: - username: #{app_name} - password: #{app_name} - -root_path: <%= ENV['ROOT_PATH'] %> - -smtp: - address: <%= ENV['SMTP_ADDRESS'] %> - port: 587 - enable_starttls_auto: true - user_name: <%= ENV['SMTP_USER_NAME'] %> - password: <%= ENV['SMTP_PASSWORD'] %> - authentication: 'plain' - -AWS: - S3: - bucket: <%= ENV['S3_BUCKET_NAME'] %> - access_key_id: <%= ENV['AWS_ACCESS_KEY_ID'] %> - secret_access_key: <%= ENV['AWS_SECRET_ACCESS_KEY'] %> - aws_url: http://<%= ENV['AWS_RAW_URL'] %> - aws_raw_url: <%= ENV['AWS_RAW_URL'] %> - # Bucket region should be ireland for this setting - end_point: s3-eu-west-1.amazonaws.com - YML - prepend_file 'config/settings.yml', config + prepend_file 'config/settings.yml', template_content('settings.yml.erb') end def generate_rollbar @@ -99,17 +67,12 @@ def generate_rollbar end def generate_simple_form - generate 'simple_form:install --bootstrap --force' + bundle_command 'exec rails generate simple_form:install --bootstrap -force' copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' end def add_staging_secret_key_to_secrets_yml - config = <<-YML - -staging: - secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> - YML - append_file 'config/secrets.yml', config + append_file 'config/secrets.yml', template_content('secrets.yml.erb') end # Copy files diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index af478d3..9e21139 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -5,6 +5,7 @@ module Cybele class AppGenerator < Rails::Generators::AppGenerator + @options = nil # Default settings @@ -42,6 +43,12 @@ class AppGenerator < Rails::Generators::AppGenerator default: false, group: :cybele, desc: 'Skip sidekiq integration. Default: don\'t skip' + class_option :skip_simple_form, + type: :boolean, + aliases: nil, + default: false, + group: :cybele, + desc: 'Skip simple_form integration. Default: don\'t skip' def initialize(*args) super @@ -54,34 +61,16 @@ def initialize(*args) option_with_ask_limited(:database, DATABASES) option_with_ask_yes(:skip_create_database) option_with_ask_yes(:skip_sidekiq) + option_with_ask_yes(:skip_simple_form) @options.freeze end - def finish_template - invoke :customization - super - end - - def customization - invoke :customize_gemfile - invoke :setup_editor_config - invoke :setup_ruby_version - invoke :remove_files_we_dont_need - invoke :setup_database - invoke :setup_sidekiq - invoke :setup_responders - invoke :setup_staging_environment - invoke :configure_recipient_interceptor - invoke :setup_config - invoke :fill_settings_yml - invoke :setup_rollbar - invoke :setup_simple_form - invoke :add_staging_secret_key - end - def customize_gemfile say 'Customize gem file', :green build :add_gems + unless @options[:skip_simple_form] + build :add_simple_form_gem + end bundle_command 'install --binstubs=bin/stubs' end @@ -148,6 +137,7 @@ def setup_rollbar end def setup_simple_form + return if @options[:skip_simple_form] say 'Generate simple form files', :green build :generate_simple_form end diff --git a/spec/features/new_not_default_project_spec.rb b/spec/features/new_not_default_project_spec.rb index 47cdb85..260c5ef 100644 --- a/spec/features/new_not_default_project_spec.rb +++ b/spec/features/new_not_default_project_spec.rb @@ -6,7 +6,7 @@ before(:all) do drop_dummy_database remove_project_directory - run_cybele('--database=sqlite3 --skip-create-database --skip-sidekiq') + run_cybele('--database=sqlite3 --skip-create-database --skip-sidekiq --skip-simple-form') setup_app_dependencies end @@ -91,18 +91,13 @@ expect(config_staging_file).to match('RecipientInterceptor.new') end - it 'uses simple_form' do + it 'do not use simple_form' do gemfile_file = content('Gemfile') - expect(gemfile_file).to match(/^gem 'simple_form'/) + expect(gemfile_file).not_to match(/^gem 'simple_form'/) - config_simple_form_file = content('config/initializers/simple_form.rb') - expect(config_simple_form_file).to match(/^SimpleForm.setup/) - - simple_form_bootstrap_file = content('config/initializers/simple_form_bootstrap.rb') - expect(simple_form_bootstrap_file).to match(/^SimpleForm.setup/) - - simple_form_tr_yml_file = content('config/locales/simple_form.tr.yml') - expect(simple_form_tr_yml_file).to match('simple_form') + expect(File).not_to exist(file_project_path('config/initializers/simple_form.rb')) + expect(File).not_to exist(file_project_path('config/initializers/simple_form_bootstrap.rb')) + expect(File).not_to exist(file_project_path('config/locales/simple_form.tr.yml')) end it 'make control secret_key_base for staging' do diff --git a/templates/cybele_Gemfile.erb b/templates/Gemfile.erb similarity index 69% rename from templates/cybele_Gemfile.erb rename to templates/Gemfile.erb index 6cf6637..2711cfb 100644 --- a/templates/cybele_Gemfile.erb +++ b/templates/Gemfile.erb @@ -7,6 +7,3 @@ gem 'config', '~> 1.5' # Rollbar is an error tracking service. gem 'rollbar', '~> 2.15', '>= 2.15.4' - -# Simple Form aims to be as flexible as possible while helping you with powerful components to create your forms. -gem 'simple_form', '~> 3.5' \ No newline at end of file diff --git a/templates/secrets.yml.erb b/templates/secrets.yml.erb new file mode 100644 index 0000000..ee82499 --- /dev/null +++ b/templates/secrets.yml.erb @@ -0,0 +1,3 @@ + +staging: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> \ No newline at end of file diff --git a/templates/settings.yml.erb b/templates/settings.yml.erb new file mode 100644 index 0000000..2a6f511 --- /dev/null +++ b/templates/settings.yml.erb @@ -0,0 +1,14 @@ +email: + sandbox: sandbox@#{app_name}.com + noreply: no-reply@#{app_name}.com + admin: admin@#{app_name}.com + +root_path: <%= ENV['ROOT_PATH'] %> + +smtp: + address: <%= ENV['SMTP_ADDRESS'] %> + port: 587 + enable_starttls_auto: true + user_name: <%= ENV['SMTP_USER_NAME'] %> + password: <%= ENV['SMTP_PASSWORD'] %> + authentication: 'plain' \ No newline at end of file diff --git a/templates/simple_form_Gemfile.erb b/templates/simple_form_Gemfile.erb new file mode 100644 index 0000000..225c972 --- /dev/null +++ b/templates/simple_form_Gemfile.erb @@ -0,0 +1,3 @@ + +# Simple Form aims to be as flexible as possible while helping you with powerful components to create your forms. +gem 'simple_form', '~> 3.5' \ No newline at end of file diff --git a/templates/staging.rb b/templates/staging.rb new file mode 100644 index 0000000..583d69e --- /dev/null +++ b/templates/staging.rb @@ -0,0 +1,2 @@ + + Mail.register_interceptor RecipientInterceptor.new(Settings.email.sandbox, subject_prefix: '[STAGING]') \ No newline at end of file From f0ba41aef1d39c86ebe9a1ca16fa6a827fb732c0 Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Wed, 25 Oct 2017 15:55:03 +0300 Subject: [PATCH 08/12] KBP-127 #time 90m - Code was improved --- lib/cybele.rb | 2 ++ lib/cybele/app_builder.rb | 24 +++---------------- lib/cybele/generators/app_generator.rb | 19 ++++++--------- lib/cybele/helpers/recipient_interceptor.rb | 17 +++++++++++++ lib/cybele/helpers/simple_form.rb | 19 +++++++++++++++ .../recipient_interceptor_settings.yml.erb | 4 ++++ ...ng.rb => recipient_interceptor_staging.rb} | 0 templates/settings.yml.erb | 13 ---------- 8 files changed, 52 insertions(+), 46 deletions(-) create mode 100644 lib/cybele/helpers/recipient_interceptor.rb create mode 100644 lib/cybele/helpers/simple_form.rb create mode 100644 templates/recipient_interceptor_settings.yml.erb rename templates/{staging.rb => recipient_interceptor_staging.rb} (100%) diff --git a/lib/cybele.rb b/lib/cybele.rb index 924231c..1489df7 100644 --- a/lib/cybele.rb +++ b/lib/cybele.rb @@ -5,4 +5,6 @@ require 'cybele/helpers' require 'cybele/helpers/sidekiq' require 'cybele/helpers/responders' +require 'cybele/helpers/simple_form' +require 'cybele/helpers/recipient_interceptor' require 'cybele/app_builder' diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index f89407a..c5b6716 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -5,6 +5,8 @@ class AppBuilder < Rails::AppBuilder include Cybele::Helpers include Cybele::Helpers::Sidekiq include Cybele::Helpers::Responders + include Cybele::Helpers::SimpleForm + include Cybele::Helpers::RecipientInterceptor def readme template 'README.md.erb', @@ -45,10 +47,6 @@ def create_database bundle_command 'exec rake db:create db:migrate' end - def configure_recipient_interceptor - configure_environment 'staging', template_content('staging.rb') - end - def setup_staging_environment run 'cp config/environments/production.rb config/environments/staging.rb' end @@ -56,33 +54,17 @@ def setup_staging_environment def generate_config generate 'config:install' run 'cp config/settings/development.yml config/settings/staging.yml' - end - - def fill_settings_yml - prepend_file 'config/settings.yml', template_content('settings.yml.erb') + append_file('config/settings.yml', template_content('settings.yml.erb')) end def generate_rollbar generate 'rollbar' end - def generate_simple_form - bundle_command 'exec rails generate simple_form:install --bootstrap -force' - copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' - end - def add_staging_secret_key_to_secrets_yml append_file 'config/secrets.yml', template_content('secrets.yml.erb') end - # Copy files - def copy_files - # Locale files - say 'Coping files..' - remove_file 'config/locales/simple_form.en.yml', force: true - copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' - end - private def configure_environment(rails_env, config) diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index 9e21139..42efa04 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -89,6 +89,11 @@ def remove_files_we_dont_need build :remove_readme_rdoc end + def setup_config + say 'Generate config', :green + build :generate_config + end + def setup_database if @options[:database] == 'postgresql' say 'Set up postgresql template', :green @@ -121,16 +126,6 @@ def configure_recipient_interceptor build :configure_recipient_interceptor end - def setup_config - say 'Generate config', :green - build :generate_config - end - - def fill_settings_yml - say 'Fill to settings.yml file', :green - build :fill_settings_yml - end - def setup_rollbar say 'Generate rollbar', :green build :generate_rollbar @@ -138,8 +133,8 @@ def setup_rollbar def setup_simple_form return if @options[:skip_simple_form] - say 'Generate simple form files', :green - build :generate_simple_form + say 'Setting up simple_form', :green + build :configure_simple_form end def add_staging_secret_key diff --git a/lib/cybele/helpers/recipient_interceptor.rb b/lib/cybele/helpers/recipient_interceptor.rb new file mode 100644 index 0000000..0278073 --- /dev/null +++ b/lib/cybele/helpers/recipient_interceptor.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module Cybele + module Helpers + module RecipientInterceptor + def configure_recipient_interceptor + + # Add recipient_interceptor staging settings to staging environment file + configure_environment 'staging', template_content('recipient_interceptor_staging.rb') + + # Add recipient_interceptor staging settings to staging environment file + append_file 'config/settings.yml', template_content('recipient_interceptor_settings.yml.erb') + + end + end + end +end diff --git a/lib/cybele/helpers/simple_form.rb b/lib/cybele/helpers/simple_form.rb new file mode 100644 index 0000000..f083e5f --- /dev/null +++ b/lib/cybele/helpers/simple_form.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Cybele + module Helpers + module SimpleForm + def configure_simple_form + + # Run the simple_form generator + bundle_command 'exec rails generate simple_form:install --bootstrap -force' + + # Remove simple_form english file + remove_file 'config/locales/simple_form.en.yml', force: true + + # Remove simple_form turkish file + copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' + end + end + end +end diff --git a/templates/recipient_interceptor_settings.yml.erb b/templates/recipient_interceptor_settings.yml.erb new file mode 100644 index 0000000..2034fec --- /dev/null +++ b/templates/recipient_interceptor_settings.yml.erb @@ -0,0 +1,4 @@ +email: + sandbox: sandbox@#{app_name}.com + noreply: no-reply@#{app_name}.com + admin: admin@#{app_name}.com \ No newline at end of file diff --git a/templates/staging.rb b/templates/recipient_interceptor_staging.rb similarity index 100% rename from templates/staging.rb rename to templates/recipient_interceptor_staging.rb diff --git a/templates/settings.yml.erb b/templates/settings.yml.erb index 2a6f511..13fe279 100644 --- a/templates/settings.yml.erb +++ b/templates/settings.yml.erb @@ -1,14 +1 @@ -email: - sandbox: sandbox@#{app_name}.com - noreply: no-reply@#{app_name}.com - admin: admin@#{app_name}.com - root_path: <%= ENV['ROOT_PATH'] %> - -smtp: - address: <%= ENV['SMTP_ADDRESS'] %> - port: 587 - enable_starttls_auto: true - user_name: <%= ENV['SMTP_USER_NAME'] %> - password: <%= ENV['SMTP_PASSWORD'] %> - authentication: 'plain' \ No newline at end of file From 6e386e5e94dbb1220695f4816585a53c3cb7619d Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Wed, 25 Oct 2017 15:55:51 +0300 Subject: [PATCH 09/12] KBP-127 #time 1m - Code was improved --- bin/build_app | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/build_app b/bin/build_app index 39edce0..cd07503 100755 --- a/bin/build_app +++ b/bin/build_app @@ -15,4 +15,4 @@ export DISABLE_SPRING=1 # Create dummy_app echo "Create dummy_app" -cybele tmp/dummy_app --no-skip-ask \ No newline at end of file +cybele tmp/dummy_app --skip-create-database \ No newline at end of file From 8f67adec7be06403ebe4a2494874d12ea3627eb6 Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Wed, 25 Oct 2017 16:06:23 +0300 Subject: [PATCH 10/12] KBP-127 #time 5m - Files were moved to self main folders --- lib/cybele/app_builder.rb | 2 +- lib/cybele/helpers/recipient_interceptor.rb | 4 ++-- lib/cybele/helpers/responders.rb | 2 +- lib/cybele/helpers/sidekiq.rb | 14 +++++++------- .../recipient_interceptor_settings.yml.erb | 0 .../recipient_interceptor_staging.rb | 0 templates/{ => responders}/responders_Gemfile.erb | 0 templates/{ => sidekiq}/sidekiq.rake.erb | 0 templates/{ => sidekiq}/sidekiq.rb.erb | 0 templates/{ => sidekiq}/sidekiq.yml.erb | 0 templates/{ => sidekiq}/sidekiq_Gemfile.erb | 0 templates/{ => sidekiq}/sidekiq_routes_mount.erb | 0 templates/{ => sidekiq}/sidekiq_routes_require.erb | 0 templates/{ => sidekiq}/sidekiq_schedule.yml.erb | 0 .../{ => simple_form}/simple_form_Gemfile.erb | 0 15 files changed, 11 insertions(+), 11 deletions(-) rename templates/{ => recipient_interceptor}/recipient_interceptor_settings.yml.erb (100%) rename templates/{ => recipient_interceptor}/recipient_interceptor_staging.rb (100%) rename templates/{ => responders}/responders_Gemfile.erb (100%) rename templates/{ => sidekiq}/sidekiq.rake.erb (100%) rename templates/{ => sidekiq}/sidekiq.rb.erb (100%) rename templates/{ => sidekiq}/sidekiq.yml.erb (100%) rename templates/{ => sidekiq}/sidekiq_Gemfile.erb (100%) rename templates/{ => sidekiq}/sidekiq_routes_mount.erb (100%) rename templates/{ => sidekiq}/sidekiq_routes_require.erb (100%) rename templates/{ => sidekiq}/sidekiq_schedule.yml.erb (100%) rename templates/{ => simple_form}/simple_form_Gemfile.erb (100%) diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index c5b6716..412c6a4 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -26,7 +26,7 @@ def add_gems def add_simple_form_gem # Add simple_form gems - append_file('Gemfile', template_content('simple_form_Gemfile.erb')) + append_file('Gemfile', template_content('simple_form/simple_form_Gemfile.erb')) end def add_editor_config diff --git a/lib/cybele/helpers/recipient_interceptor.rb b/lib/cybele/helpers/recipient_interceptor.rb index 0278073..42ca96d 100644 --- a/lib/cybele/helpers/recipient_interceptor.rb +++ b/lib/cybele/helpers/recipient_interceptor.rb @@ -6,10 +6,10 @@ module RecipientInterceptor def configure_recipient_interceptor # Add recipient_interceptor staging settings to staging environment file - configure_environment 'staging', template_content('recipient_interceptor_staging.rb') + configure_environment 'staging', template_content('recipient_interceptor/recipient_interceptor_staging.rb') # Add recipient_interceptor staging settings to staging environment file - append_file 'config/settings.yml', template_content('recipient_interceptor_settings.yml.erb') + append_file 'config/settings.yml', template_content('recipient_interceptor/recipient_interceptor_settings.yml.erb') end end diff --git a/lib/cybele/helpers/responders.rb b/lib/cybele/helpers/responders.rb index f303bce..676d790 100644 --- a/lib/cybele/helpers/responders.rb +++ b/lib/cybele/helpers/responders.rb @@ -5,7 +5,7 @@ module Helpers module Responders def configure_responders # Add gems - append_file('Gemfile', template_content('responders_Gemfile.erb')) + append_file('Gemfile', template_content('responders/responders_Gemfile.erb')) run_bundle # Add initializers diff --git a/lib/cybele/helpers/sidekiq.rb b/lib/cybele/helpers/sidekiq.rb index 58dd158..63cd576 100644 --- a/lib/cybele/helpers/sidekiq.rb +++ b/lib/cybele/helpers/sidekiq.rb @@ -5,15 +5,15 @@ module Helpers module Sidekiq def configure_sidekiq # Add gems - append_file('Gemfile', template_content('sidekiq_Gemfile.erb')) + append_file('Gemfile', template_content('sidekiq/sidekiq_Gemfile.erb')) create_sidekiq_files # Add sidekiq routes to routes prepend_file 'config/routes.rb', - template_content('sidekiq_routes_require.erb') + template_content('sidekiq/sidekiq_routes_require.erb') inject_into_file 'config/routes.rb', - template_content('sidekiq_routes_mount.erb'), + template_content('sidekiq/sidekiq_routes_mount.erb'), after: 'Rails.application.routes.draw do' end @@ -21,21 +21,21 @@ def configure_sidekiq def create_sidekiq_files # Initialize files - template 'sidekiq.rb.erb', + template 'sidekiq/sidekiq.rb.erb', 'config/initializers/sidekiq.rb', force: true # Add tasks - template 'sidekiq.rake.erb', + template 'sidekiq/sidekiq.rake.erb', 'lib/tasks/sidekiq.rake', force: true # Add sidekiq.yml - template 'sidekiq.yml.erb', + template 'sidekiq/sidekiq.yml.erb', 'config/sidekiq.yml', force: true # Add sidekiq_schedule.yml - template 'sidekiq_schedule.yml.erb', + template 'sidekiq/sidekiq_schedule.yml.erb', 'config/sidekiq_schedule.yml', force: true end diff --git a/templates/recipient_interceptor_settings.yml.erb b/templates/recipient_interceptor/recipient_interceptor_settings.yml.erb similarity index 100% rename from templates/recipient_interceptor_settings.yml.erb rename to templates/recipient_interceptor/recipient_interceptor_settings.yml.erb diff --git a/templates/recipient_interceptor_staging.rb b/templates/recipient_interceptor/recipient_interceptor_staging.rb similarity index 100% rename from templates/recipient_interceptor_staging.rb rename to templates/recipient_interceptor/recipient_interceptor_staging.rb diff --git a/templates/responders_Gemfile.erb b/templates/responders/responders_Gemfile.erb similarity index 100% rename from templates/responders_Gemfile.erb rename to templates/responders/responders_Gemfile.erb diff --git a/templates/sidekiq.rake.erb b/templates/sidekiq/sidekiq.rake.erb similarity index 100% rename from templates/sidekiq.rake.erb rename to templates/sidekiq/sidekiq.rake.erb diff --git a/templates/sidekiq.rb.erb b/templates/sidekiq/sidekiq.rb.erb similarity index 100% rename from templates/sidekiq.rb.erb rename to templates/sidekiq/sidekiq.rb.erb diff --git a/templates/sidekiq.yml.erb b/templates/sidekiq/sidekiq.yml.erb similarity index 100% rename from templates/sidekiq.yml.erb rename to templates/sidekiq/sidekiq.yml.erb diff --git a/templates/sidekiq_Gemfile.erb b/templates/sidekiq/sidekiq_Gemfile.erb similarity index 100% rename from templates/sidekiq_Gemfile.erb rename to templates/sidekiq/sidekiq_Gemfile.erb diff --git a/templates/sidekiq_routes_mount.erb b/templates/sidekiq/sidekiq_routes_mount.erb similarity index 100% rename from templates/sidekiq_routes_mount.erb rename to templates/sidekiq/sidekiq_routes_mount.erb diff --git a/templates/sidekiq_routes_require.erb b/templates/sidekiq/sidekiq_routes_require.erb similarity index 100% rename from templates/sidekiq_routes_require.erb rename to templates/sidekiq/sidekiq_routes_require.erb diff --git a/templates/sidekiq_schedule.yml.erb b/templates/sidekiq/sidekiq_schedule.yml.erb similarity index 100% rename from templates/sidekiq_schedule.yml.erb rename to templates/sidekiq/sidekiq_schedule.yml.erb diff --git a/templates/simple_form_Gemfile.erb b/templates/simple_form/simple_form_Gemfile.erb similarity index 100% rename from templates/simple_form_Gemfile.erb rename to templates/simple_form/simple_form_Gemfile.erb From f20798026a5da30b5ec6cac7b276a2995c93318a Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Wed, 25 Oct 2017 16:36:17 +0300 Subject: [PATCH 11/12] KBP-127 #time 5m -Code was improved --- lib/cybele.rb | 1 + lib/cybele/app_builder.rb | 14 +------------- lib/cybele/helpers/simple_form.rb | 5 +++++ lib/cybele/helpers/staging.rb | 15 +++++++++++++++ 4 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 lib/cybele/helpers/staging.rb diff --git a/lib/cybele.rb b/lib/cybele.rb index 1489df7..c16e3dc 100644 --- a/lib/cybele.rb +++ b/lib/cybele.rb @@ -3,6 +3,7 @@ require 'cybele/version' require 'cybele/generators/app_generator' require 'cybele/helpers' +require 'cybele/helpers/staging' require 'cybele/helpers/sidekiq' require 'cybele/helpers/responders' require 'cybele/helpers/simple_form' diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 412c6a4..8b07edb 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -3,6 +3,7 @@ module Cybele class AppBuilder < Rails::AppBuilder include Cybele::Helpers + include Cybele::Helpers::Staging include Cybele::Helpers::Sidekiq include Cybele::Helpers::Responders include Cybele::Helpers::SimpleForm @@ -24,11 +25,6 @@ def add_gems append_file('Gemfile', template_content('Gemfile.erb')) end - def add_simple_form_gem - # Add simple_form gems - append_file('Gemfile', template_content('simple_form/simple_form_Gemfile.erb')) - end - def add_editor_config copy_file 'editorconfig', '.editorconfig' end @@ -47,10 +43,6 @@ def create_database bundle_command 'exec rake db:create db:migrate' end - def setup_staging_environment - run 'cp config/environments/production.rb config/environments/staging.rb' - end - def generate_config generate 'config:install' run 'cp config/settings/development.yml config/settings/staging.yml' @@ -61,10 +53,6 @@ def generate_rollbar generate 'rollbar' end - def add_staging_secret_key_to_secrets_yml - append_file 'config/secrets.yml', template_content('secrets.yml.erb') - end - private def configure_environment(rails_env, config) diff --git a/lib/cybele/helpers/simple_form.rb b/lib/cybele/helpers/simple_form.rb index f083e5f..2f415c8 100644 --- a/lib/cybele/helpers/simple_form.rb +++ b/lib/cybele/helpers/simple_form.rb @@ -14,6 +14,11 @@ def configure_simple_form # Remove simple_form turkish file copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' end + + def add_simple_form_gem + # Add simple_form gem + append_file('Gemfile', template_content('simple_form/simple_form_Gemfile.erb')) + end end end end diff --git a/lib/cybele/helpers/staging.rb b/lib/cybele/helpers/staging.rb new file mode 100644 index 0000000..6cc5cef --- /dev/null +++ b/lib/cybele/helpers/staging.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Cybele + module Helpers + module Staging + def setup_staging_environment + run 'cp config/environments/production.rb config/environments/staging.rb' + end + + def add_staging_secret_key_to_secrets_yml + append_file 'config/secrets.yml', template_content('secrets.yml.erb') + end + end + end +end From e6d287cedfa80216c2702451efd3995c7068577b Mon Sep 17 00:00:00 2001 From: hamdibayhan Date: Wed, 25 Oct 2017 17:29:13 +0300 Subject: [PATCH 12/12] KBP-127 #time 30m -Code was improved after rubocop --- .rubocop.yml | 14 +++++++++++--- lib/cybele/generators/app_generator.rb | 5 +---- lib/cybele/helpers/recipient_interceptor.rb | 9 ++++----- lib/cybele/helpers/simple_form.rb | 3 --- .../recipient_interceptor_staging.rb | 2 -- .../recipient_interceptor_staging.rb.erb | 1 + 6 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 templates/recipient_interceptor/recipient_interceptor_staging.rb create mode 100644 templates/recipient_interceptor/recipient_interceptor_staging.rb.erb diff --git a/.rubocop.yml b/.rubocop.yml index d7f20d3..3cd698c 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,19 +1,23 @@ AllCops: - Includes: + Include: - 'Rakefile' - 'Gemfile' - Excludes: + Exclude: - tmp/**/**/**/** Documentation: Enabled: false Metrics/LineLength: - Max: 90 + Max: 110 Exclude: - 'Gemfile' - 'cybele.gemspec' +Metrics/ClassLength: + Exclude: + - 'lib/cybele/generators/app_generator.rb' + Style/AccessorMethodName: Exclude: - 'lib/cybele/generators/app_generator.rb' @@ -38,3 +42,7 @@ Style/FrozenStringLiteralComment: Style/IndentHeredoc: Exclude: - 'spec/features/cli_help_spec.rb' + +Naming/HeredocDelimiterNaming: + Exclude: + - 'spec/features/cli_help_spec.rb' \ No newline at end of file diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index 42efa04..e4f3ef0 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -5,7 +5,6 @@ module Cybele class AppGenerator < Rails::Generators::AppGenerator - @options = nil # Default settings @@ -68,9 +67,7 @@ def initialize(*args) def customize_gemfile say 'Customize gem file', :green build :add_gems - unless @options[:skip_simple_form] - build :add_simple_form_gem - end + build :add_simple_form_gem unless @options[:skip_simple_form] bundle_command 'install --binstubs=bin/stubs' end diff --git a/lib/cybele/helpers/recipient_interceptor.rb b/lib/cybele/helpers/recipient_interceptor.rb index 42ca96d..d6fb20c 100644 --- a/lib/cybele/helpers/recipient_interceptor.rb +++ b/lib/cybele/helpers/recipient_interceptor.rb @@ -4,13 +4,12 @@ module Cybele module Helpers module RecipientInterceptor def configure_recipient_interceptor - # Add recipient_interceptor staging settings to staging environment file - configure_environment 'staging', template_content('recipient_interceptor/recipient_interceptor_staging.rb') - + configure_environment 'staging', + template_content('recipient_interceptor/recipient_interceptor_staging.rb.erb') # Add recipient_interceptor staging settings to staging environment file - append_file 'config/settings.yml', template_content('recipient_interceptor/recipient_interceptor_settings.yml.erb') - + append_file 'config/settings.yml', + template_content('recipient_interceptor/recipient_interceptor_settings.yml.erb') end end end diff --git a/lib/cybele/helpers/simple_form.rb b/lib/cybele/helpers/simple_form.rb index 2f415c8..b8c254d 100644 --- a/lib/cybele/helpers/simple_form.rb +++ b/lib/cybele/helpers/simple_form.rb @@ -4,13 +4,10 @@ module Cybele module Helpers module SimpleForm def configure_simple_form - # Run the simple_form generator bundle_command 'exec rails generate simple_form:install --bootstrap -force' - # Remove simple_form english file remove_file 'config/locales/simple_form.en.yml', force: true - # Remove simple_form turkish file copy_file 'config/locales/simple_form.tr.yml', 'config/locales/simple_form.tr.yml' end diff --git a/templates/recipient_interceptor/recipient_interceptor_staging.rb b/templates/recipient_interceptor/recipient_interceptor_staging.rb deleted file mode 100644 index 583d69e..0000000 --- a/templates/recipient_interceptor/recipient_interceptor_staging.rb +++ /dev/null @@ -1,2 +0,0 @@ - - Mail.register_interceptor RecipientInterceptor.new(Settings.email.sandbox, subject_prefix: '[STAGING]') \ No newline at end of file diff --git a/templates/recipient_interceptor/recipient_interceptor_staging.rb.erb b/templates/recipient_interceptor/recipient_interceptor_staging.rb.erb new file mode 100644 index 0000000..c54fc8c --- /dev/null +++ b/templates/recipient_interceptor/recipient_interceptor_staging.rb.erb @@ -0,0 +1 @@ +Mail.register_interceptor RecipientInterceptor.new(Settings.email.sandbox, subject_prefix: '[STAGING]') \ No newline at end of file