From 06aa859785ceaaf57714f0c0dd0b7b156a50c6fd Mon Sep 17 00:00:00 2001 From: fadimezhan Date: Mon, 4 Dec 2017 18:45:01 +0300 Subject: [PATCH 1/2] KBP-173 #time 1h - add guardfile gem --- lib/cybele/app_builder.rb | 5 ++ lib/cybele/generators/app_generator.rb | 5 ++ templates/Gemfile.erb | 3 +- templates/guardfile/guardfile_settings.rb.erb | 50 +++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 templates/guardfile/guardfile_settings.rb.erb diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 8ae2794..68f06d3 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -87,6 +87,11 @@ def generate_rollbar generate 'rollbar' end + def generate_guard + bundle_command 'exec guard init' + inject_into_file('Guardfile', template_content('guardfile/guardfile_settings.rb.erb')) + end + def configure_bullet configure_environment 'development', template_content('bullet/bullet_settings.rb.erb') end diff --git a/lib/cybele/generators/app_generator.rb b/lib/cybele/generators/app_generator.rb index 80811d5..cf81ae1 100644 --- a/lib/cybele/generators/app_generator.rb +++ b/lib/cybele/generators/app_generator.rb @@ -170,6 +170,11 @@ def setup_rollbar build :generate_rollbar end + def setup_guard + say 'Generate guard', :green + build :generate_guard + end + def configure_locale_language say 'Configure locale', :green build :configure_locale_language diff --git a/templates/Gemfile.erb b/templates/Gemfile.erb index cbe1809..3bb7855 100644 --- a/templates/Gemfile.erb +++ b/templates/Gemfile.erb @@ -35,6 +35,7 @@ group :development, :test do gem 'pronto', '~> 0.9.5' gem 'pronto-flay', '~> 0.9.0', require: false gem 'pronto-rubocop', '~> 0.9.0', require: false + gem 'guard', '~> 2.14', '>= 2.14.1' end # A set of common locale data and translations to internationalize and/or localize your Rails applications. @@ -44,4 +45,4 @@ gem 'rails-i18n', '~> 5.0', '>= 5.0.4' gem 'devise', '~> 4.3' # Audited is an ORM extension that logs all changes to your models -gem 'audited', '~> 4.5' \ No newline at end of file +gem 'audited', '~> 4.5' diff --git a/templates/guardfile/guardfile_settings.rb.erb b/templates/guardfile/guardfile_settings.rb.erb new file mode 100644 index 0000000..242c4f9 --- /dev/null +++ b/templates/guardfile/guardfile_settings.rb.erb @@ -0,0 +1,50 @@ + + guard :rspec, cmd: 'bundle exec rspec' do + require 'guard/rspec/dsl' + dsl = Guard::RSpec::Dsl.new(self) + + # Feel free to open issues for suggestions and improvements + + # RSpec files + rspec = dsl.rspec + watch(rspec.spec_helper) { rspec.spec_dir } + watch(rspec.spec_support) { rspec.spec_dir } + watch(rspec.spec_files) + + # Ruby files + ruby = dsl.ruby + dsl.watch_spec_files_for(ruby.lib_files) + + # Rails files + rails = dsl.rails(view_extensions: %w(erb haml slim)) + dsl.watch_spec_files_for(rails.app_files) + dsl.watch_spec_files_for(rails.views) + + watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { 'spec/features' } + watch(%r{^app/models/(.+)\.rb$}) { 'spec/features' } + watch(rails.controllers) do |m| + [ + rspec.spec.call("routing/#{m[1]}_routing"), + rspec.spec.call("controllers/#{m[1]}_controller"), + rspec.spec.call("acceptance/#{m[1]}") + ] + end + + # Rails config changes + watch(rails.spec_helper) { rspec.spec_dir } + watch(rails.routes) { 'spec' } #{ "#{rspec.spec_dir}/routing" } + watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" } + + # Watch jobs + watch(%r{^app/jobs/(.+)_(job)\.rb$}) { 'spec/jobs' } + + # Capybara features specs + watch(rails.view_dirs) { 'spec/features' } # { |m| rspec.spec.call("features/#{m[1]}") } + watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") } + + # Turnip features and steps + watch(%r{^spec/acceptance/(.+)\.feature$}) + watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| + Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' + end + end From a32de329472e4215633ed8c603155bd09a3c0f98 Mon Sep 17 00:00:00 2001 From: fadimezhan Date: Wed, 6 Dec 2017 17:06:58 +0300 Subject: [PATCH 2/2] KBP-173 #time 1h - inject guardfile content --- lib/cybele/app_builder.rb | 3 +- spec/features/new_default_project_spec.rb | 7 ++ spec/features/new_not_default_project_spec.rb | 7 ++ templates/guardfile/guardfile_settings.rb.erb | 95 +++++++++---------- 4 files changed, 63 insertions(+), 49 deletions(-) diff --git a/lib/cybele/app_builder.rb b/lib/cybele/app_builder.rb index 68f06d3..ad796dc 100644 --- a/lib/cybele/app_builder.rb +++ b/lib/cybele/app_builder.rb @@ -89,7 +89,8 @@ def generate_rollbar def generate_guard bundle_command 'exec guard init' - inject_into_file('Guardfile', template_content('guardfile/guardfile_settings.rb.erb')) + inject_into_file('Guardfile', "\n\n#{template_content('guardfile/guardfile_settings.rb.erb')}", + after: 'config/Guardfile" instead of "Guardfile"') end def configure_bullet diff --git a/spec/features/new_default_project_spec.rb b/spec/features/new_default_project_spec.rb index 0b7393c..d237547 100644 --- a/spec/features/new_default_project_spec.rb +++ b/spec/features/new_default_project_spec.rb @@ -368,4 +368,11 @@ it 'uses pronto' do pronto_test end + + it 'uses guardfile' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match("gem 'guard'") + + expect(File).to exist(file_project_path('Guardfile')) + end end diff --git a/spec/features/new_not_default_project_spec.rb b/spec/features/new_not_default_project_spec.rb index 21f01ae..74a2e45 100644 --- a/spec/features/new_not_default_project_spec.rb +++ b/spec/features/new_not_default_project_spec.rb @@ -305,4 +305,11 @@ it 'uses pronto' do pronto_test end + + it 'uses guardfile' do + gemfile_file = content('Gemfile') + expect(gemfile_file).to match("gem 'guard'") + + expect(File).to exist(file_project_path('Guardfile')) + end end diff --git a/templates/guardfile/guardfile_settings.rb.erb b/templates/guardfile/guardfile_settings.rb.erb index 242c4f9..a913bae 100644 --- a/templates/guardfile/guardfile_settings.rb.erb +++ b/templates/guardfile/guardfile_settings.rb.erb @@ -1,50 +1,49 @@ +guard :rspec, cmd: 'bundle exec rspec' do + require 'guard/rspec/dsl' + dsl = Guard::RSpec::Dsl.new(self) + + # Feel free to open issues for suggestions and improvements + + # RSpec files + rspec = dsl.rspec + watch(rspec.spec_helper) { rspec.spec_dir } + watch(rspec.spec_support) { rspec.spec_dir } + watch(rspec.spec_files) + + # Ruby files + ruby = dsl.ruby + dsl.watch_spec_files_for(ruby.lib_files) + + # Rails files + rails = dsl.rails(view_extensions: %w(erb haml slim)) + dsl.watch_spec_files_for(rails.app_files) + dsl.watch_spec_files_for(rails.views) + + watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { 'spec/features' } + watch(%r{^app/models/(.+)\.rb$}) { 'spec/features' } + watch(rails.controllers) do |m| + [ + rspec.spec.call("routing/#{m[1]}_routing"), + rspec.spec.call("controllers/#{m[1]}_controller"), + rspec.spec.call("acceptance/#{m[1]}") + ] + end + + # Rails config changes + watch(rails.spec_helper) { rspec.spec_dir } + watch(rails.routes) { 'spec' } #{ "#{rspec.spec_dir}/routing" } + watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" } + + # Watch jobs + watch(%r{^app/jobs/(.+)_(job)\.rb$}) { 'spec/jobs' } + + # Capybara features specs + watch(rails.view_dirs) { 'spec/features' } # { |m| rspec.spec.call("features/#{m[1]}") } + watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") } - guard :rspec, cmd: 'bundle exec rspec' do - require 'guard/rspec/dsl' - dsl = Guard::RSpec::Dsl.new(self) - - # Feel free to open issues for suggestions and improvements - - # RSpec files - rspec = dsl.rspec - watch(rspec.spec_helper) { rspec.spec_dir } - watch(rspec.spec_support) { rspec.spec_dir } - watch(rspec.spec_files) - - # Ruby files - ruby = dsl.ruby - dsl.watch_spec_files_for(ruby.lib_files) - - # Rails files - rails = dsl.rails(view_extensions: %w(erb haml slim)) - dsl.watch_spec_files_for(rails.app_files) - dsl.watch_spec_files_for(rails.views) - - watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { 'spec/features' } - watch(%r{^app/models/(.+)\.rb$}) { 'spec/features' } - watch(rails.controllers) do |m| - [ - rspec.spec.call("routing/#{m[1]}_routing"), - rspec.spec.call("controllers/#{m[1]}_controller"), - rspec.spec.call("acceptance/#{m[1]}") - ] - end - - # Rails config changes - watch(rails.spec_helper) { rspec.spec_dir } - watch(rails.routes) { 'spec' } #{ "#{rspec.spec_dir}/routing" } - watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" } - - # Watch jobs - watch(%r{^app/jobs/(.+)_(job)\.rb$}) { 'spec/jobs' } - - # Capybara features specs - watch(rails.view_dirs) { 'spec/features' } # { |m| rspec.spec.call("features/#{m[1]}") } - watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") } - - # Turnip features and steps - watch(%r{^spec/acceptance/(.+)\.feature$}) - watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| - Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' - end + # Turnip features and steps + watch(%r{^spec/acceptance/(.+)\.feature$}) + watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m| + Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' end +end