class Basepack::Generators::InstallGenerator
Public Class Methods
next_migration_number(path)
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 9 def self.next_migration_number(path) if ActiveRecord::Base.timestamped_migrations sleep 1 # make sure each time we get a different timestamp Time.new.utc.strftime("%Y%m%d%H%M%S") else "%.3d" % (current_migration_number(path) + 1) end end
Public Instance Methods
add_assets()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 18 def add_assets js_manifest = 'app/assets/javascripts/application.js' if File.exist?(js_manifest) insert_into_file js_manifest, "//= require jquery\n", :before => "\n//= require" insert_into_file js_manifest, "//= require basepack\n", :after => "jquery_ujs\n" insert_into_file js_manifest, "//= require jquery.turbolinks\n", :after => "jquery\n" else copy_file "application.js", js_manifest end css_manifest = 'app/assets/stylesheets/application.css' scss_manifest = 'app/assets/stylesheets/application.css.scss' if File.exist?(css_manifest) content = File.read(css_manifest) insert_into_file css_manifest, " *= require basepack\n *= require basepack_and_overrides\n", :after => "require_self\n" copy_file "basepack_and_overrides.css", "app/assets/stylesheets/basepack_and_overrides.css" elsif File.exists?(scss_manifest) content = File.read(scss_manifest) append_file scss_manifest, '@import "basepack";' append_file scss_manifest, '@import "basepack_and_overrides";' copy_file "basepack_and_overrides.css", "app/assets/stylesheets/basepack_and_overrides.css" else copy_file "application.css.scss", "app/assets/stylesheets/application.css.scss" end end
add_dependant_gems()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 62 def add_dependant_gems gem 'jquery-turbolinks' gem 'inherited_resources', '~> 1.4.1' gem 'ransack', '~> 1.0' gem 'kaminari', '~> 0.15.1' gem 'simple_form', '~> 3.0.1' gem 'settingslogic', '~> 2.0.9' #needs to be set exactly because of incompatibility bootstrap-modal-rails #TODO fix when new version of bootstrap-modal-rails will be released gem 'twitter-bootstrap-rails', '~> 2.2.7' gem 'bootbox-rails' #needed for imports gem 'delayed_job_active_record', '~> 4.0.0' #used in filters gem 'strip_attributes', '~> 1.2' end
add_dragonfly()
click to toggle source
for Image/assets management (used also in imports)
# File lib/generators/basepack/install_generator.rb, line 84 def add_dragonfly gem 'rack-cache', :require => 'rack/cache' gem 'dragonfly', '~> 1.0.2' generate 'dragonfly' end
check_cancan()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 44 def check_cancan if !defined?(Devise) #and yes?("Would you like to install CanCan?") gem 'cancan' generate "cancan:ability" end end
check_devise()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 51 def check_devise #othervise error: undefined local variable or method `current_user' if !defined?(CanCan) #and yes?("Would you like to install Devise?") gem "devise" generate "devise:install" model_name = ask("What would you like the user model to be called? [user]") model_name = "user" if model_name.blank? generate "devise", model_name end end
copy_files()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 90 def copy_files template "basepack-settings.yml", "config/basepack-settings.yml" copy_file "../../../../config/locales/en.yml", "config/locales/basepack.en.yml" directory 'layouts', 'app/views/layouts/' copy_file "resources_controller.rb", "app/controllers/resources_controller.rb" app_file = 'app/views/layouts/application.html.erb' if File.exists?(app_file) and yes?("Can I remove #{app_file}?") run("rm #{app_file}") end insert_into_file 'config/routes.rb', :after => "draw do\n" do <<-'RUBY' concern :resourcable do get 'options', :on => :collection get 'query', :on => :collection post 'query', :on => :collection get 'export', :on => :collection post 'export', :on => :collection get 'import', :on => :collection post 'import', :on => :collection patch 'import', :on => :collection delete 'import', :on => :collection delete 'bulk_delete', :on => :collection get 'filters', :on => :collection get 'export_templates', :on => :collection get 'taggings', :on => :collection #patch 'list_columns', :on => :collection #put 'list_columns', :on => :collection get 'bulk_edit', on: :collection patch 'bulk_update', on: :collection post 'bulk_update', on: :collection post 'update_parent', on: :member post 'load_tree_nodes', on: :member get 'load_tree_nodes', on: :member end resources :filters, concerns: :resourcable resources :export_templates, concerns: :resourcable # Uncomment if you are going to use tags (you also need get "acts-as-taggable-on") # # resources :acts_as_taggable_on_tags, concerns: :resourcable # Exampe of controller which merge action: # # resources :customers do # get 'diff/:id2', on: :member, to: :diff, as: :diff #for showing a diff page # post 'merge/:id2', on: :member, to: :merge, as: :merge #for mege action # end RUBY end end
create_imports()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 155 def create_imports #TODO - should I ask whether generate? copy_migrate 'create_imports' copy_migrate 'create_imports_importables_join_table' copy_file 'import.rb', 'app/models/import.rb' user_model_file = 'app/models/user.rb' if File.exists?(user_model_file) insert_into_file user_model_file, " has_many :imports, inverse_of: :user\n", :after => "class User < ActiveRecord::Base\n" end end
create_saved_filters()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 166 def create_saved_filters #TODO - should I ask whether generate? copy_migrate 'create_filters' copy_file 'filter.rb', 'app/models/filter.rb' copy_file 'filters_controller.rb', 'app/controllers/filters_controller.rb' copy_migrate 'create_export_templates' copy_file 'export_template.rb', 'app/models/export_template.rb' copy_file 'export_templates_controller.rb', 'app/controllers/export_templates_controller.rb' ability_model_file = 'app/models/ability.rb' if File.exists?(ability_model_file) insert_into_file(ability_model_file, <<-EOF, # FIXME: change abilities according your needs can :manage, :all # Everybody can see others saved filter, but only author can mangage them. can :read, Filter can :manage, Filter, :user_id => user.id if user can :read, ExportTemplate can :manage, ExportTemplate, :user_id => user.id if user EOF :after => "def initialize(user)\n") end user_model_file = 'app/models/user.rb' if File.exists?(user_model_file) insert_into_file user_model_file, " has_many :filters, inverse_of: :user\n", :after => "class User < ActiveRecord::Base\n" insert_into_file user_model_file, " has_many :export_templates, inverse_of: :user\n", :after => "class User < ActiveRecord::Base\n" end end
rails_admin_init_script()
click to toggle source
# File lib/generators/basepack/install_generator.rb, line 146 def rails_admin_init_script rails_admin_cfg_file = 'config/initializers/rails_admin.rb' if File.exist?(rails_admin_cfg_file) insert_into_file rails_admin_cfg_file, " config.included_models = Basepack::Utils.detect_models #+ ['ActsAsTaggableOn::Tag', 'Delayed::Job']\n", :before => "end\n" else copy_file "rails_admin.rb", rails_admin_cfg_file end end
Private Instance Methods
copy_migrate(filename)
click to toggle source
def show_readme
readme "README" if behavior == :invoke
end
# File lib/generators/basepack/install_generator.rb, line 205 def copy_migrate(filename) if self.class.migration_exists?("db/migrate", "#{filename}") say_status("skipped", "Migration #{filename}.rb already exists") else migration_template "migrations/#{filename}.rb", "db/migrate/#{filename}.rb" end end