lib/generators/goldencobra/install_generator.rb in goldencobra-1.0.9.3 vs lib/generators/goldencobra/install_generator.rb in goldencobra-1.1.0

- old
+ new

@@ -6,29 +6,83 @@ source_root File.expand_path("../templates", __FILE__) desc "Creates active_admin initializer, routes and copy locale files to your application." class_option :orm + def install_local_rvm + if yes?("Would you like to configure a .rvmrc file?") + @ruby_version = ask("What is your current ruby version (default: 1.9.3-p194)") + @ruby_version = "1.9.3-p194" if @ruby_version.blank? + template '../templates/rvmrc.erb', '.rvmrc' + system("/bin/bash -ce '[[ -s \"$HOME/.rvm/scripts/rvm\" ]] && source \"$HOME/.rvm/scripts/rvm\" && rvm use #{@ruby_version}@#{Rails.application.class.parent_name} --create'") + end + end + + def install_test_env + if yes?("Would you like to install a test Environment") + gem("rspec-rails", '~> 2.12.2', :group => "test") + gem("annotate", :group => "test") + gem("ruby-graphviz", :group => "test") + gem("mysql2", :group => "test") + gem("cucumber", :group => "test") + gem("cucumber-rails", :group => "test", :require => false) + gem("factory_girl", :group => "test") + gem("factory_girl_rails", :group => "test") + gem("database_cleaner", :group => "test") + gem("capybara", :group => "test") + gem("capybara-webkit", :group => "test") + gem("guard", :group => "test") + gem("guard-rspec", :group => "test") + gem("guard-cucumber", :group => "test") + gem("guard-livereload", :group => "test") + gem("rb-fsevent", '~> 0.9.1', :group => "test") + gem("growl", :group => "test") + gem("launchy", :group => "test") + gem("faker", :group => "test") + gem("email_spec", :group => "test") + gem("shoulda-matchers", :group => "test") + system("bundle install") + end + end + + def modify_production_env + line = "config.assets.compile = false" + gsub_file 'config/environments/production.rb', /(#{Regexp.escape(line)})/mi do |match| + "config.assets.compile = true" + end + end + + def modify_application_rb + line = "config.active_record.whitelist_attributes = true" + gsub_file 'config/application.rb', /(#{Regexp.escape(line)})/mi do |match| + "config.active_record.whitelist_attributes = false" + end + end + def install_gems - gem('acts-as-taggable-on', git: 'git://github.com/mbleigh/acts-as-taggable-on') + gem('acts-as-taggable-on', :git => 'git://github.com/mbleigh/acts-as-taggable-on') gem('meta-tags', :git => 'git://github.com/jazzgumpy/meta-tags.git') gem('compass-960-plugin') gem('progress_bar') gem('compass-rails') + gem('mysql2') + system("bundle install") end def copy_initializer @underscored_user_name = "user".underscore template '../templates/active_admin.rb.erb', 'config/initializers/active_admin.rb' end def install_assets require 'rails' require 'active_admin' - template '../templates/active_admin.js', 'app/assets/javascripts/active_admin.js' - template '../templates/active_admin.css.scss', 'app/assets/stylesheets/active_admin.css.scss' + remove_file "app/assets/stylesheets/application.css" + directory "../templates/assets", "app/assets" + directory "../templates/views", "app/views" template '../templates/extend_goldencobra_articles_controller.rb', 'app/controllers/extend_goldencobra_articles_controller.rb' + remove_file "public/index.html" end def setup_routes route "mount Goldencobra::Engine => '/'" route "devise_for :users, ActiveAdmin::Devise.config" @@ -38,35 +92,109 @@ def self.source_root File.expand_path("../templates", __FILE__) end - # def create_migrations - #rake("goldencobra:install:migrations") - ##oder - # generate("model", "#{name} #{model_attributes.join(' ')} article_id:integer") - # Dir["#{self.class.source_root}/migrations/*.rb"].sort.each do |filepath| - # name = File.basename(filepath) - # template "migrations/#{name}", "db/migrate/#{name}" - # sleep 1 - # end - # end - def install_optional_assets - if yes?("Would you like to install Better Errors?") - gem("better_errors", :group => "development") - gem("binding_of_caller", :group => "development") + gem("better_errors", :group => "development") + gem("binding_of_caller", :group => "development") + system("bundle install") + end + + def install_errbit + if yes?("Would you like to configure Errbit?") + gem("airbrake") + system("bundle install") + @api_key = ask("What is your Errbit API key? (default: 1eacfe13fb5d9eca2dee5401a9b93ddb)") + @api_key = "1eacfe13fb5d9eca2dee5401a9b93ddb" if @api_key.blank? + + @host = ask("What is your Errbit Host? (default: errors.ikusei.de)") + @host = "errors.ikusei.de" if @host.blank? + + @port = ask("What is your Errbit Port? (bsp: 80 default | 443 secure )") + @port = "80" if @port.blank? + template '../templates/errbit.rb.erb', 'config/initializers/errbit.rb' end end def install_newrelic if yes?("Would you like to install NewRelic? (www.newrelic.com)") - gem("newrelic_rpm") - @license_key = ask("What is your NewRelic license key? (bsp: b199ad3e4e0d728b1aac69aec4870af7ef9478bb)") + gem("newrelic_rpm", "3.5.5.38") + system("bundle install") + @license_key = ask("What is your NewRelic license key? (default: b199ad3e4e0d728b1aac69aec4870af7ef9478bb)") + @license_key = "b199ad3e4e0d728b1aac69aec4870af7ef9478bb" if @license_key.blank? template '../templates/newrelic.yml.erb', 'config/newrelic.yml' end end + def create_admin_user_password + @admin_email = ask("Please enter a email for your admin account (default: admin@goldencobra.de):") + @admin_email = "admin@goldencobra.de" if @admin_email.blank? + + @admin_password = ask("Please enter a new password for admin account (user: #{@admin_email}):") + template '../templates/seeds.rb.erb', "db/seeds.rb" + if yes?("Would you like to create your local db?") + system("bundle install") + rake("db:create") + end + rake("goldencobra:install:migrations") + if yes?("Would you like to migrate your local db?") + rake("db:migrate") + end + if yes?("Would you like to seed your local db?") + rake("db:seed") + end + end + + def install_capistrano + if yes?("Would you like to configure git?") + @git_url = ask("What is your git url? (bsp: ssh://git@git.ikusei.de:7999/KLIMA/website.git)") + git :init + git :remote => "add origin #{@git_url}" + git :add => "." + git :commit => "-m 'First commit'" + git :push => "origin master" + end + if yes?("Would you like to configure capistrano? (a git repository is required)") + @ip_address = ask("To which IP do you want to deploy? (bsp: Taurus 178.23.121.27)") + if @git_url.blank? + @git_url = ask("What is your git url? (bsp: ssh://git@git.ikusei.de:7999/KLIMA/website.git)") + end + @app_name = Rails.application.class.parent_name.parameterize.underscore + capify! + remove_file "config/deploy.rb" + template '../templates/deploy.rb.erb', 'config/deploy.rb' + + #Add Changes to git + git :add => "." + git :commit => "-m 'Deploy files added'" + git :push => "origin master" + end + if yes?("Would you like to configure your server and deploy to it?") + copy_file '../templates/create_database.mysql.erb', 'config/templates/create_database.mysql.erb' + copy_file '../templates/database.yml.erb', 'config/templates/database.yml.erb' + template '../templates/apache.tmpl.erb', "config/templates/#{@app_name}" + system("bundle install") + + #Add Changes to git + git :add => "." + git :commit => "-m 'Server configuration files added'" + git :push => "origin master" + + system("cap deploy:create_gemset") + system("cap deploy:setup") + if yes?("Would you like to create remote database?") + system("cap deploy:db:setup") + end + system("cap deploy") + if yes?("Would you like to seed your remote db?") + system("cap deploy:seed") + end + if yes?("Would you like to configure apache on your server?") + system("cap deploy:apache_setup") + end + end + end end end end