Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alvin2ye/2908045 to your computer and use it in GitHub Desktop.
Save alvin2ye/2908045 to your computer and use it in GitHub Desktop.

Revisions

  1. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -129,6 +129,7 @@ module BaseModel
    production:
    <<: *defaults
    STR
    run "cp config/setting.yml config/setting.yml.default"
    run "touch app/models/setting.rb"
    append_file "app/models/setting.rb", <<-STR
    # coding: utf-8
  2. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -151,6 +151,7 @@ class Setting < Settingslogic
    end

    # Assets files
    get "https://raw.github.com/gist/2168046", "vendor/assets/javascripts/will_paginate.js"
    run "rm app/assets/javascripts/application.js"
    run "touch app/assets/javascripts/application.coffee"
    append_file "app/assets/javascripts/application.coffee", <<-STR
  3. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 41 additions and 1 deletion.
    42 changes: 41 additions & 1 deletion rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -150,7 +150,47 @@ class Setting < Settingslogic
    generate("controller home index")
    end


    # Assets files
    run "rm app/assets/javascripts/application.js"
    run "touch app/assets/javascripts/application.coffee"
    append_file "app/assets/javascripts/application.coffee", <<-STR
    #= require jquery
    #= require jquery_ujs
    #= require will_paginate
    #= require bootstrap
    #= require_tree
    #= require_self
    $(document).ready ->
    $('.dropdown-toggle').dropdown()
    STR

    run "rm app/assets/stylesheets/application.css"
    run "touch app/assets/stylesheets/application.scss"
    append_file "app/assets/stylesheets/application.scss", <<-STR
    /*
    *= require bootstrap
    *= require responsive
    *= require_self
    *= require_tree
    */
    body { position: relative; background-color: #fff; background-repeat: repeat-x; background-position: 0 40px; }
    a,a:visited {
    color: #0069D6; text-decoration: none; line-height: inherit; font-weight: inherit;
    &:hover { color:#000; }
    }
    .navbar-fixed-top {
    position: static; right: 0; left: 0; margin-bottom:20px;
    .brand {
    padding-right: 0; padding-left: 0; margin-left: 0px; float: left; font-weight: bold; color: #000; text-shadow: 0 1px 0 rgba(255,255,255,.1), 0 0 30px rgba(255,255,255,.125); -webkit-transition: all .2s linear; -moz-transition: all .2s linear; transition: all .2s linear;
    &:hover { text-decoration: none; background:none; }
    }
    }
    .container-fluid { padding-left: 0px; padding-right: 0px; }
    .box {
    margin-bottom:20px;
    h2 { font-size:14px; border-bottom:1px solid #ddd; margin-bottom:10px; }
    }
    STR

    # I18n files
    get "https://raw.github.com/gist/2167594", "config/locales/zh-CN.yml"
  4. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -145,6 +145,9 @@ class Setting < Settingslogic
    # Routes
    gsub_file 'config/routes.rb', ".+?", ""
    route "devise_for :users, :path => 'account', :controllers => { :registrations => :account }\n root :to => 'home#index'"

    # HomeController
    generate("controller home index")
    end


  5. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 17 additions and 17 deletions.
    34 changes: 17 additions & 17 deletions rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -77,6 +77,23 @@ def before_config(&block); @before_configs[@current_recipe] = block; end
    gsub_file "config/mongoid.yml", "app_name", "#{app_name}"
    run "cp config/mongoid.yml config/mongoid.yml.default"

    # Mongoid BaseModel
    run "mkdir app/models/mongoid"
    run "touch app/models/mongoid/base_model.rb"
    append_file "app/models/mongoid/base_model.rb", <<-STR
    # coding: utf-8
    module Mongoid
    module BaseModel
    extend ActiveSupport::Concern
    included do
    scope :recent, desc(:_id)
    scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
    end
    end
    end
    STR

    # Redis
    get "https://raw.github.com/gist/2167666", "config/redis.yml"
    gsub_file "config/redis.yml", "app_name", "#{app_name}"
    @@ -121,23 +138,6 @@ class Setting < Settingslogic
    end
    STR

    # Mongoid BaseModel
    run "mkdir app/models/mongoid"
    run "touch app/models/mongoid/base_model.rb"
    append_file "app/models/mongoid/base_model.rb", <<-STR
    # coding: utf-8
    module Mongoid
    module BaseModel
    extend ActiveSupport::Concern
    included do
    scope :recent, desc(:_id)
    scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
    end
    end
    end
    STR

    # Uploaders
    run "mkdir app/uploaders"
    get "https://raw.github.com/gist/2167981", "app/uploaders/base_uploader.rb"
  6. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -4,8 +4,10 @@
    # Mongoid, Devise, Bootstrap, jQuery, Redis, Cells, will_paginate, Carrierwave, simple_form, Settingslogic, Thin
    #
    # Usage
    #
    # $ rails new app_name -m https://raw.github.com/gist/2168014
    # ============================================================================================================
    #

    initializer 'generators.rb', <<-RUBY
    Rails.application.config.generators do |g|
    end
  7. @huacnlee huacnlee revised this gist Mar 23, 2012. 1 changed file with 4 additions and 1 deletion.
    5 changes: 4 additions & 1 deletion rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,10 @@
    # This is a Rails init template with MongoDB projects
    #
    # Mongoid, Devise, Bootstrap, jQuery, Redis, Cells, will_paginate, Carrierwave, simple_form, Settingslogic, Thin
    # ====================================================================================================================
    #
    # Usage
    # $ rails new app_name -m https://raw.github.com/gist/2168014
    # ============================================================================================================
    initializer 'generators.rb', <<-RUBY
    Rails.application.config.generators do |g|
    end
  8. @huacnlee huacnlee created this gist Mar 23, 2012.
    159 changes: 159 additions & 0 deletions rails_template_for_mongoid.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,159 @@
    # coding: utf-8
    # This is a Rails init template with MongoDB projects
    #
    # Mongoid, Devise, Bootstrap, jQuery, Redis, Cells, will_paginate, Carrierwave, simple_form, Settingslogic, Thin
    # ====================================================================================================================
    initializer 'generators.rb', <<-RUBY
    Rails.application.config.generators do |g|
    end
    RUBY

    # Remove unnecessary files
    run "rm README.rdoc"
    run "touch README.md"
    run "rm public/index.html"
    run "rm public/favicon.ico"
    run "rm app/assets/images/rails.png"
    run "rm Gemfile"

    # Setup Git
    # git :init
    run "rm .gitignore"
    get 'https://raw.github.com/gist/2167387', '.gitignore'

    @current_recipe = nil
    @configs = {}

    @after_blocks = []
    def after_bundler(&block); @after_blocks << [@current_recipe, block]; end
    @after_everything_blocks = []
    def after_everything(&block); @after_everything_blocks << [@current_recipe, block]; end
    @before_configs = {}
    def before_config(&block); @before_configs[@current_recipe] = block; end

    # Gemfile
    get "https://raw.github.com/gist/2167336", "Gemfile"


    # config/environments/development.rb
    gsub_file 'config/environments/development.rb', /config.action_mailer.raise_delivery_errors = false/, "config.action_mailer.default_url_options = { :host => 'localhost:3000' }"
    gsub_file 'config/environments/development.rb', /^([\s]{0,})config\.active_record\./," # config.active_record."

    # config/application/rb
    gsub_file 'config/application.rb', "require 'rails/all'",
    <<-STR
    require "action_controller/railtie"
    require "action_mailer/railtie"
    require "active_resource/railtie"
    require "rails/test_unit/railtie"
    require "sprockets/railtie"
    STR
    gsub_file 'config/application.rb', 'Bundler.require(*Rails.groups(:assets => %w(development test)))', 'Bundler.require *Rails.groups(:assets => %w(production development test))'
    gsub_file 'config/application.rb', '# config.autoload_paths += %W(#{config.root}/extras)',
    <<-STR
    config.autoload_paths += %W(\#{config.root}/cells)
    config.autoload_paths += %W(\#{config.root}/uploaders)
    STR
    gsub_file 'config/application.rb', "# config.time_zone = 'Central Time (US & Canada)'","config.time_zone = 'Beijing'"
    gsub_file 'config/application.rb', "# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]", "config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]"
    gsub_file 'config/application.rb', "# config.i18n.default_locale = :de", 'config.i18n.default_locale = "zh-CN"'
    gsub_file 'config/application.rb', 'config.filter_parameters += [:password]', 'config.filter_parameters += [:password,:password_confirmation]'
    gsub_file 'config/application.rb', '# config.active_record.schema_format = :sql', 'config.mongoid.include_root_in_json = false'
    gsub_file 'config/application.rb', /^[\s]{0,}#.+/, ""
    gsub_file 'config/application.rb', /\n+/,"\n"


    # Generate configs
    after_bundler do
    run "rm config/database.yml"

    # Mongoid
    get "https://raw.github.com/gist/2167751", "config/mongoid.yml"
    gsub_file "config/mongoid.yml", "app_name", "#{app_name}"
    run "cp config/mongoid.yml config/mongoid.yml.default"

    # Redis
    get "https://raw.github.com/gist/2167666", "config/redis.yml"
    gsub_file "config/redis.yml", "app_name", "#{app_name}"
    run "cp config/redis.yml config/redis.yml.default"
    get "https://raw.github.com/gist/2167671", "config/initializers/redis.rb"

    # Devise
    generate("devise:install")
    generate("devise User")
    gsub_file "app/models/user.rb", "include Mongoid::Document", 'include Mongoid::Document
    include Mongoid::Timestamps
    include Mongoid::BaseModel'

    # Simple Form
    generate("simple_form:install")
    get "https://raw.github.com/gist/2167880", "config/initializers/simple_form.rb"

    # SettingsLogic
    run "touch config/setting.yml"
    append_file 'config/setting.yml', <<-STR
    defaults: &defaults
    app_name: "#{app_name.humanize.titleize}"
    footer_html: "&copy; #{app_name.humanize.titleize}."
    domain: "127.0.0.1:3000"
    upload_url: "http://127.0.0.1:3000/uplaods"
    development:
    <<: *defaults
    test:
    <<: *defaults
    production:
    <<: *defaults
    STR
    run "touch app/models/setting.rb"
    append_file "app/models/setting.rb", <<-STR
    # coding: utf-8
    class Setting < Settingslogic
    source "\#{Rails.root}/config/setting.yml"
    namespace Rails.env
    end
    STR

    # Mongoid BaseModel
    run "mkdir app/models/mongoid"
    run "touch app/models/mongoid/base_model.rb"
    append_file "app/models/mongoid/base_model.rb", <<-STR
    # coding: utf-8
    module Mongoid
    module BaseModel
    extend ActiveSupport::Concern
    included do
    scope :recent, desc(:_id)
    scope :exclude_ids, Proc.new { |ids| where(:_id.nin => ids.map(&:to_i)) }
    end
    end
    end
    STR

    # Uploaders
    run "mkdir app/uploaders"
    get "https://raw.github.com/gist/2167981", "app/uploaders/base_uploader.rb"

    # Routes
    gsub_file 'config/routes.rb', ".+?", ""
    route "devise_for :users, :path => 'account', :controllers => { :registrations => :account }\n root :to => 'home#index'"
    end



    # I18n files
    get "https://raw.github.com/gist/2167594", "config/locales/zh-CN.yml"
    get "https://raw.github.com/gist/2167614", "config/locales/devise.zh-CN.yml"
    get "https://raw.github.com/gist/2167630", "config/locales/carrierwave.zh-CN.yml"


    # Run callback
    @current_recipe = nil
    run "bundle install"
    @after_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; b[1].call}

    @current_recipe = nil
    @after_everything_blocks.each{|b| config = @configs[b[0]] || {}; @current_recipe = b[0]; b[1].call}