lib/cybele/app_builder.rb in cybele-0.3.0 vs lib/cybele/app_builder.rb in cybele-0.4.0
- old
+ new
@@ -1,9 +1,9 @@
module Cybele #:nodoc:#
# Public: This allows you to override entire operations, like the creation of the
- # Gemfile_new, README, or JavaScript files, without needing to know exactly
+ # cybele_Gemfile, README, or JavaScript files, without needing to know exactly
# what those operations do so you can create another template action.
class AppBuilder < Rails::AppBuilder
# Internal: Overwrite super class readme
def readme
@@ -26,15 +26,146 @@
end
# Internal: Replace gemfile
def replace_gemfile
remove_file 'Gemfile'
- copy_file 'Gemfile_new', 'Gemfile'
+ copy_file 'cybele_Gemfile', 'Gemfile'
end
# Internal: Replace erb files with html files
def replace_erb_with_haml
remove_file 'app/views/layouts/application.html.erb'
template 'app/views/layouts/application.html.haml.erb', 'app/views/layouts/application.html.haml', :force => true
+ end
+
+ # Internal: Replace responders controller template
+ def install_responder_gem
+ copy_file 'lib/application_responder.rb', 'lib/application_responder.rb'
+ remove_file 'app/controllers/application_controller.rb'
+ copy_file 'app/controllers/application_controller.rb', 'app/controllers/application_controller.rb'
+ copy_file 'lib/templates/rails/responders_controller/controller.rb', 'lib/templates/rails/responders_controller/controller.rb'
+ copy_file 'config/locales/responders.en.yml', 'config/locales/responders.en.yml'
+ copy_file 'config/locales/responders.tr.yml', 'config/locales/responders.tr.yml'
+ end
+
+ # Internal: Setup database config
+ def replace_database_yml
+ template 'config/database.yml.erb', 'config/database.yml', :force => true
+ end
+
+ # Internal: Create database
+ def create_database
+ bundle_command 'exec rake db:create'
+ end
+
+ # Internal: Setup gitignore files
+ def setup_gitignore_files
+ remove_file '.gitignore'
+ copy_file 'cybele_gitignore', '.gitignore'
+ end
+
+ # Internal: Setup gitignore folders
+ def setup_gitignore_folders
+ %w(
+ app/assets/images
+ db/migrate
+ spec/support
+ spec/lib
+ spec/models
+ spec/views
+ spec/controllers
+ spec/helpers
+ ).each do |dir|
+ empty_directory_with_keep_file dir
+ end
+ end
+
+ # Internal: Setup asset precompile
+ # Look for information https://github.com/thomas-mcdonald/bootstrap-sass#rails-4
+ def setup_asset_precompile
+
+ config = <<-RUBY
+
+
+ config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
+ config.sass.preferred_syntax = :sass
+ RUBY
+
+ inject_into_file 'config/application.rb', config, :after => '# config.i18n.default_locale = :de'
+ end
+
+ # Interval: Convert application.js to application.js.coffee
+ def convert_application_js_to_coffee
+ remove_file 'app/assets/javascripts/application.js'
+ copy_file 'app/assets/javascripts/application.js.coffee', 'app/assets/javascripts/application.js.coffee'
+ end
+
+ # Interval: Convert application.css to application.css.sass
+ def convert_application_css_to_sass
+ remove_file 'app/assets/stylesheets/application.css'
+ copy_file 'app/assets/stylesheets/application.css.sass', 'app/assets/stylesheets/application.css.sass'
+ end
+
+ # Interval: Configure smtp
+ def configure_smtp
+ copy_file 'config/initializers/mail.rb', 'config/initializers/mail.rb'
+
+ prepend_file 'config/environments/production.rb',
+ "require Rails.root.join('config/initializers/mail')\n"
+
+ config = <<-RUBY
+
+
+ # Mail Settings
+ config.action_mailer.delivery_method = :smtp
+ config.action_mailer.smtp_settings = MAIL_SETTING
+ RUBY
+
+ inject_into_file 'config/environments/production.rb', config,
+ :after => 'config.action_mailer.raise_delivery_errors = false'
+ end
+
+ # Interval: Configure action mailer
+ def configure_action_mailer
+ action_mailer_host 'development', "#{app_name}.dev"
+ action_mailer_host 'test', 'www.example.com'
+ action_mailer_host 'production', "#{app_name}.com"
+ end
+
+ # Interval: Setup letter opener
+ def setup_letter_opener
+ config = 'config.action_mailer.delivery_method = :letter_opener'
+ configure_environment 'development', config
+ end
+
+ # Internal: Leftovers
+ def leftovers
+ end
+
+ private
+
+ # Internal: Set action mailer hostname
+ #
+ # rail_env - rails env like development, text, production
+ # host - domain.dev, domain.com or example.com
+ #
+ # Returns nothing
+ def action_mailer_host(rails_env, host)
+ config = "config.action_mailer.default_url_options = { host: '#{host}' }"
+ configure_environment(rails_env, config)
+ end
+
+ # Internal: Set configure environment
+ #
+ # rail_env - rails env like development, text, production
+ # config - config string which will add to rails_env file
+ #
+ # Return nothing
+ def configure_environment(rails_env, config)
+ inject_into_file(
+ "config/environments/#{rails_env}.rb",
+ "\n\n #{config}",
+ before: "\nend"
+ )
end
end
end
\ No newline at end of file