######################################################### # 2014 Marco Mastrodonato(c) # This is a Rails 4.0 template to use with activeleonardo gem # https://rubygems.org/gems/active_leonardo # https://github.com/marcomd/Active_Leonardo # # USAGE: rails new yourappname -m active_template.rb # # ------------------------------------------------------- # ######################################################### rails_version = Rails::VERSION::STRING puts '*' * 40 puts "* Rails #{rails_version} Processing template..." puts '*' * 40 test_mode = nil ARGV.each{|arg| test_mode = true if arg == "test_mode"} app_path = ARGV[1] puts "**** Starting app into #{app_path} in test mode! ****" if test_mode use_git = test_mode || yes?("Do you use git ?") if use_git git :init remove_file ".gitignore" file ".gitignore", <<-EOS.gsub(/^ /, '') # See http://help.github.com/ignore-files/ for more about ignoring files. # # If you find yourself ignoring temporary files generated by your text editor # or operating system, you probably want to add a global ignore instead: # git config --global core.excludesfile ~/.gitignore_global # Ignore bundler config /.bundle # Ignore the default SQLite database. /db/*.sqlite3 # Ignore all logfiles and tempfiles. /log/*.log /tmp /nbproject /.idea lib/tasks/files/* /*.cmd /*.dat /config/initializers/secret_token.rb EOS end gem "activeadmin", git: 'https://github.com/gregbell/active_admin.git' if test_mode gem "active_leonardo", path: "../../." else gem "active_leonardo" end gem "jquery-turbolinks" gem "bourbon" easy_develop = test_mode || yes?("Do you want to make development easier?") if easy_develop gem "rack-mini-profiler", group: :development gem "better_errors", group: :development gem "awesome_print", group: :development end #use_editor = yes?("Do you want a wysihtml editor?") #if use_editor # gem 'activeadmin-dragonfly', git: 'https://github.com/stefanoverna/activeadmin-dragonfly' # gem 'activeadmin-wysihtml5', git: 'https://github.com/stefanoverna/activeadmin-wysihtml5' #end rspec = test_mode || yes?("Add rspec as testing framework ?") if rspec gem 'rspec-rails', group: [:test, :development] gem 'capybara', group: :test gem 'launchy', group: :test gem 'database_cleaner', group: :test gem 'factory_girl_rails', group: :test end authentication = test_mode || yes?("Authentication ?") model_name = authorization = nil if authentication default_model_name = "User" model_name = test_mode ? "" : ask(" Insert model name: [#{default_model_name}]") if model_name.empty? || model_name == 'y' model_name = default_model_name else model_name = model_name.classify stdout = <<-REMEM.gsub(/^ /, '') ************************************************************************* Remember to add your auth class when you use active leonardo's generator. For example: rails g leosca Product name price:decimal --auth_class=#{model_name} ************************************************************************* REMEM p stdout end gem "devise" authorization = test_mode || yes?("Authorization ?") if authorization gem "cancan" end end gem 'state_machine' if test_mode || yes?("Do you have to handle states ?") # Updates for latest Rails versions if /4.1/ === rails_version # gem 'ransack', git: 'http://github.com/activerecord-hackery/ransack.git', branch: 'rails-4.1' # gem 'polyamorous', git: 'http://github.com/activerecord-hackery/polyamorous.git' # gem 'formtastic', git: 'http://github.com/justinfrench/formtastic.git' elsif /4.2/ === rails_version gem 'inherited_resources', git: 'https://github.com/josevalim/inherited_resources.git', branch: 'rails-4-2' end dashboard_root = test_mode || yes?("Would you use dashboard as root ? (recommended)") home = test_mode || yes?("Ok. Would you create home controller as root ?") unless dashboard_root if test_mode || yes?("Bundle install ?") dir = test_mode ? "" : ask(" Insert folder name to install locally: [blank=default gems path]") run "bundle install #{"--path=#{dir}" unless dir.empty? || dir=='y'}" end generate "rspec:install" if rspec generate "active_admin:install #{authentication ? model_name : "--skip-users"}" if authorization generate "cancan:ability" generate "migration", "AddRolesMaskTo#{model_name}", "roles_mask:integer" end generate "leolay", "active", #specify theme "--auth_class=#{model_name}", (rspec ? nil : "--skip-rspec"), (authorization ? nil : "--skip-authorization"), (authentication ? nil : "--skip-authentication"), (test_mode ? "--no-verbose" : nil) if dashboard_root route "root :to => 'admin/dashboard#index'" elsif home generate "controller", "home", "index" route "root :to => 'home#index'" end rake "db:create:all" rake "db:migrate" rake "db:seed" #rake "gems:unpack" if yes?("Unpack to vendor/gems ?") if use_git git :add => "." git :commit => %Q{ -m "Initial commit" } end puts "ENJOY!"