Created
March 6, 2009 19:49
-
-
Save langalex/75038 to your computer and use it in GitHub Desktop.
upstream rails application template
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # upstream rails application template | |
| # comes with: | |
| # * working user registration/login via authlogic | |
| # * rspec/cucumber/culerity for testing | |
| # * thinkinG_sphinx configuration | |
| # * german localization | |
| # * capistrano deployment script | |
| # * jquery and blueprint css set up | |
| # TODO | |
| # * add forgot password method | |
| # * add cucucmber features for login/registration | |
| # * make registration/login use resource_controller | |
| app_name = `pwd`.split('/').last.strip | |
| run "rm README" | |
| run "rm -rf test" | |
| run "rm public/index.html" | |
| run "rm public/favicon.ico" | |
| run "rm public/robots.txt" | |
| run "rm public/images/rails.png" | |
| run "rm -f public/javascripts/*" | |
| run "ln -s application_controller.rb app/controllers/application.rb" # resource_controller requires application | |
| # get jquery and plugins | |
| run "curl -L http://jqueryjs.googlecode.com/files/jquery-1.3.2.js > public/javascripts/jquery.js" | |
| run "curl -L http://jqueryjs.googlecode.com/svn/trunk/plugins/form/jquery.form.js > public/javascripts/jquery.form.js" | |
| run "curl -L http://jqueryjs.googlecode.com/svn/trunk/plugins/methods/date.js > public/javascripts/date.js" | |
| run "curl -L http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/scripts/jquery.datePicker.js > public/javascripts/jquery.datePicker.js" | |
| run "curl -L http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/styles/datePicker.css > public/stylesheets/datePicker.css" | |
| # blueprint/css | |
| run "curl -L http://github.com/joshuaclayton/blueprint-css/tarball/master > public/stylesheets/blueprint.tar && tar xf public/stylesheets/blueprint.tar" | |
| run 'rm public/stylesheets/blueprint.tar' | |
| blueprint_dir = Dir.entries('.').grep(/blueprint/).first | |
| run "mv #{blueprint_dir}/blueprint/*.css public/stylesheets" | |
| run "rm -rf #{blueprint_dir}" | |
| # environment | |
| file 'config/environment.rb', <<-FILE | |
| RAILS_GEM_VERSION = '2.3.1' unless defined? RAILS_GEM_VERSION | |
| require File.join(File.dirname(__FILE__), 'boot') | |
| Rails::Initializer.run do |config| | |
| # config.load_paths += %W( \#{RAILS_ROOT}/extras ) | |
| # config.plugins = [ :exception_notification, :ssl_requirement, :all ] | |
| # config.frameworks -= [ :active_record, :active_resource, :action_mailer ] | |
| # config.active_record.observers = :cacher, :garbage_collector, :forum_observer | |
| # config.time_zone = 'UTC' | |
| config.i18n.default_locale = :de | |
| end | |
| FILE | |
| # application layout | |
| file 'app/views/layouts/application.html.erb', <<-FILE | |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |
| <head> | |
| <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> | |
| <title>#{app_name}</title> | |
| <%= stylesheet_link_tag 'screen', 'datePicker', :media => 'screen, projection' %> | |
| <%= stylesheet_link_tag 'print', :media => 'print' %> | |
| <!--[if IE]> | |
| <%= stylesheet_link_tag 'ie', :media => 'all' %> | |
| <![endif]--> | |
| <%= javascript_include_tag 'jquery', 'jquery.form.js', 'date', 'jquery.datePicker.js', :cache => true %> | |
| <%= yield(:head) %> | |
| <script type="text/javascript"> | |
| $(function() { | |
| <%= yield(:jquery) %> | |
| }); | |
| </script> | |
| </head> | |
| <body> | |
| <div id="navigation"> | |
| <ul> | |
| <%- if current_user -%> | |
| <li><%= link_to 'Home', account_path %></li> | |
| <li><%= link_to 'Log out', user_session_path, :method => :delete %></li> | |
| <%- else -%> | |
| <li><%= link_to 'Home', root_path %></li> | |
| <li><%= link_to 'Sign up', new_user_path %></li> | |
| <li><%= link_to 'Log in', new_user_session_path %></li> | |
| <%- end -%> | |
| </ul> | |
| </div | |
| <div id="content"> | |
| <%= yield %> | |
| </div> | |
| </body> | |
| </html> | |
| FILE | |
| # Copy database.yml for distribution use | |
| run "rm config/database.yml" | |
| file "config/database.yml", <<-FILE | |
| development: | |
| adapter: mysql | |
| database: #{app_name}_development | |
| encoding: utf8 | |
| test: | |
| adapter: mysql | |
| database: #{app_name}_test | |
| encoding: utf8 | |
| production: | |
| username: rails | |
| password: | |
| adapter: mysql | |
| database: #{app_name}_production | |
| pool: 5 | |
| encoding: utf8 | |
| FILE | |
| run "cp config/database.yml config/database.yml.example" | |
| rake 'db:create' | |
| # routes | |
| file 'config/routes.rb', <<-FILE | |
| ActionController::Routing::Routes.draw do |map| | |
| end | |
| FILE | |
| # Set up .gitignore files | |
| run "touch tmp/.gitignore log/.gitignore vendor/.gitignore" | |
| run %{find . -type d -empty | grep -v "vendor" | grep -v ".git" | grep -v "tmp" | xargs -I xxx touch xxx/.gitignore} | |
| file '.gitignore', <<-END | |
| .DS_Store | |
| log/*.log | |
| log/*.pid | |
| tmp/**/* | |
| config/database.yml | |
| db/schema.rb | |
| config/*sphinx.conf | |
| db/sphinx | |
| END | |
| # gems | |
| gem 'mislav-will_paginate', :version => '~> 2.2.3', :lib => 'will_paginate', :source => 'http://gems.github.com' | |
| gem 'authlogic' | |
| gem 'giraffesoft-resource_controller', :lib => 'resource_controller', :source => 'http://gems.github.com' | |
| rake 'gems:install', :sudo => true | |
| # plugins | |
| # plugin 'jrails', :git => 'git://github.com/aaronchi/jrails.git' | |
| # plugin 'exceptional', :git => 'git://github.com/contrast/exceptional.git' | |
| # run 'cp vendor/plugins/exceptional/exceptional.yml config/exceptional.yml' | |
| # plugin 'thinking-sphinx', :git => 'git://github.com/freelancing-god/thinking-sphinx.git' | |
| # generators | |
| generate("rspec") | |
| generate("rspec-rails") | |
| run "rm -rf stories" | |
| generate("cucumber") | |
| run "rm features/step_definitions/webrat_steps.rb" | |
| generate("culerity") | |
| # authlogic | |
| generate("session user_session") | |
| generate 'rspec_model user login:string crypted_password:string password_salt:string persistence_token:string login_count:integer last_request_at:datetime last_login_at:datetime current_login_at:datetime last_login_ip:string current_login_ip:string' | |
| route "map.root :controller => 'users', :action => 'new'" | |
| route 'map.resource :user_session' | |
| route "map.resource :account, :controller => 'users'" | |
| route 'map.resources :users' | |
| file "app/controllers/user_sessions_controller.rb", <<-FILE | |
| class UserSessionsController < ApplicationController | |
| require_user :only => :destroy | |
| def new | |
| @user_session = UserSession.new | |
| end | |
| def create | |
| @user_session = UserSession.new(params[:user_session]) | |
| if @user_session.save | |
| flash[:notice] = "Login successful!" | |
| redirect_back_or_default account_url | |
| else | |
| render :action => :new | |
| end | |
| end | |
| def destroy | |
| current_user_session.destroy | |
| flash[:notice] = "Logout successful!" | |
| redirect_back_or_default new_user_session_url | |
| end | |
| end | |
| FILE | |
| file 'app/controllers/users_controller.rb', <<-FILE | |
| class UsersController < ApplicationController | |
| require_user :only => [:show, :edit, :update] | |
| def new | |
| @user = User.new | |
| end | |
| def create | |
| @user = User.new(params[:user]) | |
| if @user.save | |
| flash[:notice] = "Account registered!" | |
| redirect_back_or_default account_url | |
| else | |
| render :action => :new | |
| end | |
| end | |
| def show | |
| @user = current_user | |
| end | |
| def edit | |
| @user = current_user | |
| end | |
| def update | |
| @user = current_user | |
| if @user.update_attributes(params[:user]) | |
| flash[:notice] = "Account updated!" | |
| redirect_to account_url | |
| else | |
| render :action => :edit | |
| end | |
| end | |
| end | |
| FILE | |
| file 'app/models/user.rb', <<-FILE | |
| class User < ActiveRecord::Base | |
| acts_as_authentic | |
| end | |
| FILE | |
| file 'app/controllers/application_controller.rb', <<-FILE | |
| class ApplicationController < ActionController::Base | |
| helper :all | |
| protect_from_forgery | |
| prepend_before_filter :activate_authlogic | |
| filter_parameter_logging :password, :password_confirmation | |
| helper_method :current_user_session, :current_user | |
| private | |
| def current_user_session | |
| return @current_user_session if defined?(@current_user_session) | |
| @current_user_session = UserSession.find | |
| end | |
| def current_user | |
| return @current_user if defined?(@current_user) | |
| @current_user = current_user_session && current_user_session.user | |
| end | |
| def require_user | |
| unless current_user | |
| store_location | |
| flash[:notice] = "You must be logged in to access this page" | |
| redirect_to new_user_session_url | |
| return false | |
| end | |
| end | |
| def self.require_user(options = {}) | |
| before_filter :require_user, options | |
| end | |
| def store_location | |
| session[:return_to] = request.request_uri | |
| end | |
| def redirect_back_or_default(default) | |
| redirect_to(session[:return_to] || default) | |
| session[:return_to] = nil | |
| end | |
| end | |
| FILE | |
| file 'app/views/users/new.html.erb', <<-FILE | |
| <h1>Register</h1> | |
| <% form_for @user, :url => account_path do |f| %> | |
| <%= f.error_messages %> | |
| <%= render :partial => "form", :object => f %> | |
| <%= f.submit "Register" %> | |
| <% end %> | |
| FILE | |
| file 'app/views/users/_form.html.erb', <<-FILE | |
| <%= form.label :login %><br /> | |
| <%= form.text_field :login %><br /> | |
| <br /> | |
| <%= form.label :password, form.object.new_record? ? nil : "Change password" %><br /> | |
| <%= form.password_field :password %><br /> | |
| <br /> | |
| <%= form.label :password_confirmation %><br /> | |
| <%= form.password_field :password_confirmation %><br /> | |
| <br /> | |
| FILE | |
| file 'app/views/users/edit.html.erb', <<-FILE | |
| <h1>Edit My Account</h1> | |
| <% form_for @user, :url => account_path do |f| %> | |
| <%= f.error_messages %> | |
| <%= render :partial => "form", :object => f %> | |
| <%= f.submit "Update" %> | |
| <% end %> | |
| <br /><%= link_to "My Profile", account_path %> | |
| FILE | |
| file 'app/views/users/show.html.erb', <<-FILE | |
| <p> | |
| <b>Login:</b> | |
| <%=h @user.login %> | |
| </p> | |
| <%= link_to 'Edit', edit_account_path %> | |
| FILE | |
| file 'app/views/user_sessions/new.html.erb', <<-FILE | |
| <h1>Login</h1> | |
| <% form_for @user_session, :url => user_session_path do |f| %> | |
| <%= f.error_messages %> | |
| <%= f.label :login %><br /> | |
| <%= f.text_field :login %><br /> | |
| <br /> | |
| <%= f.label :password %><br /> | |
| <%= f.password_field :password %><br /> | |
| <br /> | |
| <%= f.check_box :remember_me %><%= f.label :remember_me %><br /> | |
| <br /> | |
| <%= f.submit "Login" %> | |
| <% end %> | |
| FILE | |
| # migrations | |
| rake "db:migrate" | |
| # german localization | |
| file 'config/locales/de.yml', <<-FILE | |
| # German translations for Ruby on Rails | |
| # by Clemens Kofler ([email protected]) | |
| de: | |
| date: | |
| formats: | |
| default: "%d.%m.%Y" | |
| short: "%e. %b" | |
| long: "%e. %B %Y" | |
| only_day: "%e" | |
| day_names: [Sonntag, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag] | |
| abbr_day_names: [So, Mo, Di, Mi, Do, Fr, Sa] | |
| month_names: [~, Januar, Februar, März, April, Mai, Juni, Juli, August, September, Oktober, November, Dezember] | |
| abbr_month_names: [~, Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez] | |
| order: [ :day, :month, :year ] | |
| time: | |
| formats: | |
| default: "%A, %e. %B %Y, %H:%M Uhr" | |
| short: "%e. %B, %H:%M Uhr" | |
| long: "%A, %e. %B %Y, %H:%M Uhr" | |
| time: "%H:%M" | |
| am: "vormittags" | |
| pm: "nachmittags" | |
| datetime: | |
| distance_in_words: | |
| half_a_minute: 'eine halbe Minute' | |
| less_than_x_seconds: | |
| zero: 'weniger als 1 Sekunde' | |
| one: 'weniger als 1 Sekunde' | |
| other: 'weniger als {{count}} Sekunden' | |
| x_seconds: | |
| one: '1 Sekunde' | |
| other: '{{count}} Sekunden' | |
| less_than_x_minutes: | |
| zero: 'weniger als 1 Minute' | |
| one: 'weniger als eine Minute' | |
| other: 'weniger als {{count}} Minuten' | |
| x_minutes: | |
| one: '1 Minute' | |
| other: '{{count}} Minuten' | |
| about_x_hours: | |
| one: 'etwa 1 Stunde' | |
| other: 'etwa {{count}} Stunden' | |
| x_days: | |
| one: '1 Tag' | |
| other: '{{count}} Tage' | |
| about_x_months: | |
| one: 'etwa 1 Monat' | |
| other: 'etwa {{count}} Monate' | |
| x_months: | |
| one: '1 Monat' | |
| other: '{{count}} Monate' | |
| about_x_years: | |
| one: 'etwa 1 Jahr' | |
| other: 'etwa {{count}} Jahre' | |
| over_x_years: | |
| one: 'mehr als 1 Jahr' | |
| other: 'mehr als {{count}} Jahre' | |
| number: | |
| format: | |
| precision: 2 | |
| separator: ',' | |
| delimiter: '.' | |
| currency: | |
| format: | |
| unit: '€' | |
| format: '%n%u' | |
| separator: | |
| delimiter: | |
| precision: | |
| percentage: | |
| format: | |
| delimiter: "" | |
| precision: | |
| format: | |
| delimiter: "" | |
| human: | |
| format: | |
| delimiter: "" | |
| precision: 1 | |
| support: | |
| array: | |
| sentence_connector: "und" | |
| skip_last_comma: true | |
| activerecord: | |
| errors: | |
| template: | |
| header: | |
| one: "Konnte dieses {{model}} Objekt nicht speichern: 1 Fehler." | |
| other: "Konnte dieses {{model}} Objekt nicht speichern: {{count}} Fehler." | |
| body: "Bitte überprüfen Sie die folgenden Felder:" | |
| messages: | |
| inclusion: "ist kein gültiger Wert" | |
| exclusion: "ist nicht verfügbar" | |
| invalid: "ist nicht gültig" | |
| confirmation: "stimmt nicht mit der Bestätigung überein" | |
| accepted: "muss akzeptiert werden" | |
| empty: "muss ausgefüllt werden" | |
| blank: "muss ausgefüllt werden" | |
| too_long: "ist zu lang (nicht mehr als {{count}} Zeichen)" | |
| too_short: "ist zu kurz (nicht weniger als {{count}} Zeichen)" | |
| wrong_length: "hat die falsche Länge (muss genau {{count}} Zeichen haben)" | |
| taken: "ist bereits vergeben" | |
| not_a_number: "ist keine Zahl" | |
| greater_than: "muss größer als {{count}} sein" | |
| greater_than_or_equal_to: "muss größer oder gleich {{count}} sein" | |
| equal_to: "muss genau {{count}} sein" | |
| less_than: "muss kleiner als {{count}} sein" | |
| less_than_or_equal_to: "muss kleiner oder gleich {{count}} sein" | |
| odd: "muss ungerade sein" | |
| even: "muss gerade sein" | |
| models: | |
| FILE | |
| # thinking sphinx | |
| file 'config/sphinx.yml', <<-FILE | |
| development: | |
| enable_star: true | |
| charset_table: "0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1->a, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00C7->c, U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e, U+00CC->i, U+00CD->i, U+00CE->i, U+00CF->i, U+00D1->n, U+00D2->o, U+00D3->o, U+00D4->o, U+00D5->o, U+00D6->o, U+00D9->u, U+00DA->u, U+00DB->u, U+00DC->u, U+00DD->y, U+00E0->a, U+00E1->a, U+00E2->a, U+00E3->a, U+00E4->a, U+00E5->a, U+00E7->c, U+00E8->e, U+00E9->e, U+00EA->e, U+00EB->e, U+00EC->i, U+00ED->i, U+00EE->i, U+00EF->i, U+00F1->n, U+00F2->o, U+00F3->o, U+00F4->o, U+00F5->o, U+00F6->o, U+00F9->u, U+00FA->u, U+00FB->u, U+00FC->u, U+00FD->y, U+00FF->y, U+0100->a, U+0101->a, U+0102->a, U+0103->a, U+0104->a, U+0105->a, U+0106->c, U+0107->c, U+0108->c, U+0109->c, U+010A->c, U+010B->c, U+010C->c, U+010D->c, U+010E->d, U+010F->d, U+0112->e, U+0113->e, U+0114->e, U+0115->e, U+0116->e, U+0117->e, U+0118->e, U+0119->e, U+011A->e, U+011B->e, U+011C->g, U+011D->g, U+011E->g, U+011F->g, U+0120->g, U+0121->g, U+0122->g, U+0123->g, U+0124->h, U+0125->h, U+0128->i, U+0129->i, U+012A->i, U+012B->i, U+012C->i, U+012D->i, U+012E->i, U+012F->i, U+0130->i, U+0134->j, U+0135->j, U+0136->k, U+0137->k, U+0139->l, U+013A->l, U+013B->l, U+013C->l, U+013D->l, U+013E->l, U+0143->n, U+0144->n, U+0145->n, U+0146->n, U+0147->n, U+0148->n, U+014C->o, U+014D->o, U+014E->o, U+014F->o, U+0150->o, U+0151->o, U+0154->r, U+0155->r, U+0156->r, U+0157->r, U+0158->r, U+0159->r, U+015A->s, U+015B->s, U+015C->s, U+015D->s, U+015E->s, U+015F->s, U+0160->s, U+0161->s, U+0162->t, U+0163->t, U+0164->t, U+0165->t, U+0168->u, U+0169->u, U+016A->u, U+016B->u, U+016C->u, U+016D->u, U+016E->u, U+016F->u, U+0170->u, U+0171->u, U+0172->u, U+0173->u, U+0174->w, U+0175->w, U+0176->y, U+0177->y, U+0178->y, U+0179->z, U+017A->z, U+017B->z, U+017C->z, U+017D->z, U+017E->z, U+01A0->o, U+01A1->o, U+01AF->u, U+01B0->u, U+01CD->a, U+01CE->a, U+01CF->i, U+01D0->i, U+01D1->o, U+01D2->o, U+01D3->u, U+01D4->u, U+01D5->u, U+01D6->u, U+01D7->u, U+01D8->u, U+01D9->u, U+01DA->u, U+01DB->u, U+01DC->u, U+01DE->a, U+01DF->a, U+01E0->a, U+01E1->a, U+01E6->g, U+01E7->g, U+01E8->k, U+01E9->k, U+01EA->o, U+01EB->o, U+01EC->o, U+01ED->o, U+01F0->j, U+01F4->g, U+01F5->g, U+01F8->n, U+01F9->n, U+01FA->a, U+01FB->a, U+0200->a, U+0201->a, U+0202->a, U+0203->a, U+0204->e, U+0205->e, U+0206->e, U+0207->e, U+0208->i, U+0209->i, U+020A->i, U+020B->i, U+020C->o, U+020D->o, U+020E->o, U+020F->o, U+0210->r, U+0211->r, U+0212->r, U+0213->r, U+0214->u, U+0215->u, U+0216->u, U+0217->u, U+0218->s, U+0219->s, U+021A->t, U+021B->t, U+021E->h, U+021F->h, U+0226->a, U+0227->a, U+0228->e, U+0229->e, U+022A->o, U+022B->o, U+022C->o, U+022D->o, U+022E->o, U+022F->o, U+0230->o, U+0231->o, U+0232->y, U+0233->y, U+1E00->a, U+1E01->a, U+1E02->b, U+1E03->b, U+1E04->b, U+1E05->b, U+1E06->b, U+1E07->b, U+1E08->c, U+1E09->c, U+1E0A->d, U+1E0B->d, U+1E0C->d, U+1E0D->d, U+1E0E->d, U+1E0F->d, U+1E10->d, U+1E11->d, U+1E12->d, U+1E13->d, U+1E14->e, U+1E15->e, U+1E16->e, U+1E17->e, U+1E18->e, U+1E19->e, U+1E1A->e, U+1E1B->e, U+1E1C->e, U+1E1D->e, U+1E1E->f, U+1E1F->f, U+1E20->g, U+1E21->g, U+1E22->h, U+1E23->h, U+1E24->h, U+1E25->h, U+1E26->h, U+1E27->h, U+1E28->h, U+1E29->h, U+1E2A->h, U+1E2B->h, U+1E2C->i, U+1E2D->i, U+1E2E->i, U+1E2F->i, U+1E30->k, U+1E31->k, U+1E32->k, U+1E33->k, U+1E34->k, U+1E35->k, U+1E36->l, U+1E37->l, U+1E38->l, U+1E39->l, U+1E3A->l, U+1E3B->l, U+1E3C->l, U+1E3D->l, U+1E3E->m, U+1E3F->m, U+1E40->m, U+1E41->m, U+1E42->m, U+1E43->m, U+1E44->n, U+1E45->n, U+1E46->n, U+1E47->n, U+1E48->n, U+1E49->n, U+1E4A->n, U+1E4B->n, U+1E4C->o, U+1E4D->o, U+1E4E->o, U+1E4F->o, U+1E50->o, U+1E51->o, U+1E52->o, U+1E53->o, U+1E54->p, U+1E55->p, U+1E56->p, U+1E57->p, U+1E58->r, U+1E59->r, U+1E5A->r, U+1E5B->r, U+1E5C->r, U+1E5D->r, U+1E5E->r, U+1E5F->r, U+1E60->s, U+1E61->s, U+1E62->s, U+1E63->s, U+1E64->s, U+1E65->s, U+1E66->s, U+1E67->s, U+1E68->s, U+1E69->s, U+1E6A->t, U+1E6B->t, U+1E6C->t, U+1E6D->t, U+1E6E->t, U+1E6F->t, U+1E70->t, U+1E71->t, U+1E72->u, U+1E73->u, U+1E74->u, U+1E75->u, U+1E76->u, U+1E77->u, U+1E78->u, U+1E79->u, U+1E7A->u, U+1E7B->u, U+1E7C->v, U+1E7D->v, U+1E7E->v, U+1E7F->v, U+1E80->w, U+1E81->w, U+1E82->w, U+1E83->w, U+1E84->w, U+1E85->w, U+1E86->w, U+1E87->w, U+1E88->w, U+1E89->w, U+1E8A->x, U+1E8B->x, U+1E8C->x, U+1E8D->x, U+1E8E->y, U+1E8F->y, U+1E96->h, U+1E97->t, U+1E98->w, U+1E99->y, U+1EA0->a, U+1EA1->a, U+1EA2->a, U+1EA3->a, U+1EA4->a, U+1EA5->a, U+1EA6->a, U+1EA7->a, U+1EA8->a, U+1EA9->a, U+1EAA->a, U+1EAB->a, U+1EAC->a, U+1EAD->a, U+1EAE->a, U+1EAF->a, U+1EB0->a, U+1EB1->a, U+1EB2->a, U+1EB3->a, U+1EB4->a, U+1EB5->a, U+1EB6->a, U+1EB7->a, U+1EB8->e, U+1EB9->e, U+1EBA->e, U+1EBB->e, U+1EBC->e, U+1EBD->e, U+1EBE->e, U+1EBF->e, U+1EC0->e, U+1EC1->e, U+1EC2->e, U+1EC3->e, U+1EC4->e, U+1EC5->e, U+1EC6->e, U+1EC7->e, U+1EC8->i, U+1EC9->i, U+1ECA->i, U+1ECB->i, U+1ECC->o, U+1ECD->o, U+1ECE->o, U+1ECF->o, U+1ED0->o, U+1ED1->o, U+1ED2->o, U+1ED3->o, U+1ED4->o, U+1ED5->o, U+1ED6->o, U+1ED7->o, U+1ED8->o, U+1ED9->o, U+1EDA->o, U+1EDB->o, U+1EDC->o, U+1EDD->o, U+1EDE->o, U+1EDF->o, U+1EE0->o, U+1EE1->o, U+1EE2->o, U+1EE3->o, U+1EE4->u, U+1EE5->u, U+1EE6->u, U+1EE7->u, U+1EE8->u, U+1EE9->u, U+1EEA->u, U+1EEB->u, U+1EEC->u, U+1EED->u, U+1EEE->u, U+1EEF->u, U+1EF0->u, U+1EF1->u, U+1EF2->y, U+1EF3->y, U+1EF4->y, U+1EF5->y, U+1EF6->y, U+1EF7->y, U+1EF8->y, U+1EF9->y" | |
| test: | |
| enable_star: true | |
| charset_table: "0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1->a, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00C7->c, U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e, U+00CC->i, U+00CD->i, U+00CE->i, U+00CF->i, U+00D1->n, U+00D2->o, U+00D3->o, U+00D4->o, U+00D5->o, U+00D6->o, U+00D9->u, U+00DA->u, U+00DB->u, U+00DC->u, U+00DD->y, U+00E0->a, U+00E1->a, U+00E2->a, U+00E3->a, U+00E4->a, U+00E5->a, U+00E7->c, U+00E8->e, U+00E9->e, U+00EA->e, U+00EB->e, U+00EC->i, U+00ED->i, U+00EE->i, U+00EF->i, U+00F1->n, U+00F2->o, U+00F3->o, U+00F4->o, U+00F5->o, U+00F6->o, U+00F9->u, U+00FA->u, U+00FB->u, U+00FC->u, U+00FD->y, U+00FF->y, U+0100->a, U+0101->a, U+0102->a, U+0103->a, U+0104->a, U+0105->a, U+0106->c, U+0107->c, U+0108->c, U+0109->c, U+010A->c, U+010B->c, U+010C->c, U+010D->c, U+010E->d, U+010F->d, U+0112->e, U+0113->e, U+0114->e, U+0115->e, U+0116->e, U+0117->e, U+0118->e, U+0119->e, U+011A->e, U+011B->e, U+011C->g, U+011D->g, U+011E->g, U+011F->g, U+0120->g, U+0121->g, U+0122->g, U+0123->g, U+0124->h, U+0125->h, U+0128->i, U+0129->i, U+012A->i, U+012B->i, U+012C->i, U+012D->i, U+012E->i, U+012F->i, U+0130->i, U+0134->j, U+0135->j, U+0136->k, U+0137->k, U+0139->l, U+013A->l, U+013B->l, U+013C->l, U+013D->l, U+013E->l, U+0143->n, U+0144->n, U+0145->n, U+0146->n, U+0147->n, U+0148->n, U+014C->o, U+014D->o, U+014E->o, U+014F->o, U+0150->o, U+0151->o, U+0154->r, U+0155->r, U+0156->r, U+0157->r, U+0158->r, U+0159->r, U+015A->s, U+015B->s, U+015C->s, U+015D->s, U+015E->s, U+015F->s, U+0160->s, U+0161->s, U+0162->t, U+0163->t, U+0164->t, U+0165->t, U+0168->u, U+0169->u, U+016A->u, U+016B->u, U+016C->u, U+016D->u, U+016E->u, U+016F->u, U+0170->u, U+0171->u, U+0172->u, U+0173->u, U+0174->w, U+0175->w, U+0176->y, U+0177->y, U+0178->y, U+0179->z, U+017A->z, U+017B->z, U+017C->z, U+017D->z, U+017E->z, U+01A0->o, U+01A1->o, U+01AF->u, U+01B0->u, U+01CD->a, U+01CE->a, U+01CF->i, U+01D0->i, U+01D1->o, U+01D2->o, U+01D3->u, U+01D4->u, U+01D5->u, U+01D6->u, U+01D7->u, U+01D8->u, U+01D9->u, U+01DA->u, U+01DB->u, U+01DC->u, U+01DE->a, U+01DF->a, U+01E0->a, U+01E1->a, U+01E6->g, U+01E7->g, U+01E8->k, U+01E9->k, U+01EA->o, U+01EB->o, U+01EC->o, U+01ED->o, U+01F0->j, U+01F4->g, U+01F5->g, U+01F8->n, U+01F9->n, U+01FA->a, U+01FB->a, U+0200->a, U+0201->a, U+0202->a, U+0203->a, U+0204->e, U+0205->e, U+0206->e, U+0207->e, U+0208->i, U+0209->i, U+020A->i, U+020B->i, U+020C->o, U+020D->o, U+020E->o, U+020F->o, U+0210->r, U+0211->r, U+0212->r, U+0213->r, U+0214->u, U+0215->u, U+0216->u, U+0217->u, U+0218->s, U+0219->s, U+021A->t, U+021B->t, U+021E->h, U+021F->h, U+0226->a, U+0227->a, U+0228->e, U+0229->e, U+022A->o, U+022B->o, U+022C->o, U+022D->o, U+022E->o, U+022F->o, U+0230->o, U+0231->o, U+0232->y, U+0233->y, U+1E00->a, U+1E01->a, U+1E02->b, U+1E03->b, U+1E04->b, U+1E05->b, U+1E06->b, U+1E07->b, U+1E08->c, U+1E09->c, U+1E0A->d, U+1E0B->d, U+1E0C->d, U+1E0D->d, U+1E0E->d, U+1E0F->d, U+1E10->d, U+1E11->d, U+1E12->d, U+1E13->d, U+1E14->e, U+1E15->e, U+1E16->e, U+1E17->e, U+1E18->e, U+1E19->e, U+1E1A->e, U+1E1B->e, U+1E1C->e, U+1E1D->e, U+1E1E->f, U+1E1F->f, U+1E20->g, U+1E21->g, U+1E22->h, U+1E23->h, U+1E24->h, U+1E25->h, U+1E26->h, U+1E27->h, U+1E28->h, U+1E29->h, U+1E2A->h, U+1E2B->h, U+1E2C->i, U+1E2D->i, U+1E2E->i, U+1E2F->i, U+1E30->k, U+1E31->k, U+1E32->k, U+1E33->k, U+1E34->k, U+1E35->k, U+1E36->l, U+1E37->l, U+1E38->l, U+1E39->l, U+1E3A->l, U+1E3B->l, U+1E3C->l, U+1E3D->l, U+1E3E->m, U+1E3F->m, U+1E40->m, U+1E41->m, U+1E42->m, U+1E43->m, U+1E44->n, U+1E45->n, U+1E46->n, U+1E47->n, U+1E48->n, U+1E49->n, U+1E4A->n, U+1E4B->n, U+1E4C->o, U+1E4D->o, U+1E4E->o, U+1E4F->o, U+1E50->o, U+1E51->o, U+1E52->o, U+1E53->o, U+1E54->p, U+1E55->p, U+1E56->p, U+1E57->p, U+1E58->r, U+1E59->r, U+1E5A->r, U+1E5B->r, U+1E5C->r, U+1E5D->r, U+1E5E->r, U+1E5F->r, U+1E60->s, U+1E61->s, U+1E62->s, U+1E63->s, U+1E64->s, U+1E65->s, U+1E66->s, U+1E67->s, U+1E68->s, U+1E69->s, U+1E6A->t, U+1E6B->t, U+1E6C->t, U+1E6D->t, U+1E6E->t, U+1E6F->t, U+1E70->t, U+1E71->t, U+1E72->u, U+1E73->u, U+1E74->u, U+1E75->u, U+1E76->u, U+1E77->u, U+1E78->u, U+1E79->u, U+1E7A->u, U+1E7B->u, U+1E7C->v, U+1E7D->v, U+1E7E->v, U+1E7F->v, U+1E80->w, U+1E81->w, U+1E82->w, U+1E83->w, U+1E84->w, U+1E85->w, U+1E86->w, U+1E87->w, U+1E88->w, U+1E89->w, U+1E8A->x, U+1E8B->x, U+1E8C->x, U+1E8D->x, U+1E8E->y, U+1E8F->y, U+1E96->h, U+1E97->t, U+1E98->w, U+1E99->y, U+1EA0->a, U+1EA1->a, U+1EA2->a, U+1EA3->a, U+1EA4->a, U+1EA5->a, U+1EA6->a, U+1EA7->a, U+1EA8->a, U+1EA9->a, U+1EAA->a, U+1EAB->a, U+1EAC->a, U+1EAD->a, U+1EAE->a, U+1EAF->a, U+1EB0->a, U+1EB1->a, U+1EB2->a, U+1EB3->a, U+1EB4->a, U+1EB5->a, U+1EB6->a, U+1EB7->a, U+1EB8->e, U+1EB9->e, U+1EBA->e, U+1EBB->e, U+1EBC->e, U+1EBD->e, U+1EBE->e, U+1EBF->e, U+1EC0->e, U+1EC1->e, U+1EC2->e, U+1EC3->e, U+1EC4->e, U+1EC5->e, U+1EC6->e, U+1EC7->e, U+1EC8->i, U+1EC9->i, U+1ECA->i, U+1ECB->i, U+1ECC->o, U+1ECD->o, U+1ECE->o, U+1ECF->o, U+1ED0->o, U+1ED1->o, U+1ED2->o, U+1ED3->o, U+1ED4->o, U+1ED5->o, U+1ED6->o, U+1ED7->o, U+1ED8->o, U+1ED9->o, U+1EDA->o, U+1EDB->o, U+1EDC->o, U+1EDD->o, U+1EDE->o, U+1EDF->o, U+1EE0->o, U+1EE1->o, U+1EE2->o, U+1EE3->o, U+1EE4->u, U+1EE5->u, U+1EE6->u, U+1EE7->u, U+1EE8->u, U+1EE9->u, U+1EEA->u, U+1EEB->u, U+1EEC->u, U+1EED->u, U+1EEE->u, U+1EEF->u, U+1EF0->u, U+1EF1->u, U+1EF2->y, U+1EF3->y, U+1EF4->y, U+1EF5->y, U+1EF6->y, U+1EF7->y, U+1EF8->y, U+1EF9->y" | |
| production: | |
| enable_star: true | |
| charset_table: "0..9, a..z, _, A..Z->a..z, U+00C0->a, U+00C1->a, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00C7->c, U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e, U+00CC->i, U+00CD->i, U+00CE->i, U+00CF->i, U+00D1->n, U+00D2->o, U+00D3->o, U+00D4->o, U+00D5->o, U+00D6->o, U+00D9->u, U+00DA->u, U+00DB->u, U+00DC->u, U+00DD->y, U+00E0->a, U+00E1->a, U+00E2->a, U+00E3->a, U+00E4->a, U+00E5->a, U+00E7->c, U+00E8->e, U+00E9->e, U+00EA->e, U+00EB->e, U+00EC->i, U+00ED->i, U+00EE->i, U+00EF->i, U+00F1->n, U+00F2->o, U+00F3->o, U+00F4->o, U+00F5->o, U+00F6->o, U+00F9->u, U+00FA->u, U+00FB->u, U+00FC->u, U+00FD->y, U+00FF->y, U+0100->a, U+0101->a, U+0102->a, U+0103->a, U+0104->a, U+0105->a, U+0106->c, U+0107->c, U+0108->c, U+0109->c, U+010A->c, U+010B->c, U+010C->c, U+010D->c, U+010E->d, U+010F->d, U+0112->e, U+0113->e, U+0114->e, U+0115->e, U+0116->e, U+0117->e, U+0118->e, U+0119->e, U+011A->e, U+011B->e, U+011C->g, U+011D->g, U+011E->g, U+011F->g, U+0120->g, U+0121->g, U+0122->g, U+0123->g, U+0124->h, U+0125->h, U+0128->i, U+0129->i, U+012A->i, U+012B->i, U+012C->i, U+012D->i, U+012E->i, U+012F->i, U+0130->i, U+0134->j, U+0135->j, U+0136->k, U+0137->k, U+0139->l, U+013A->l, U+013B->l, U+013C->l, U+013D->l, U+013E->l, U+0143->n, U+0144->n, U+0145->n, U+0146->n, U+0147->n, U+0148->n, U+014C->o, U+014D->o, U+014E->o, U+014F->o, U+0150->o, U+0151->o, U+0154->r, U+0155->r, U+0156->r, U+0157->r, U+0158->r, U+0159->r, U+015A->s, U+015B->s, U+015C->s, U+015D->s, U+015E->s, U+015F->s, U+0160->s, U+0161->s, U+0162->t, U+0163->t, U+0164->t, U+0165->t, U+0168->u, U+0169->u, U+016A->u, U+016B->u, U+016C->u, U+016D->u, U+016E->u, U+016F->u, U+0170->u, U+0171->u, U+0172->u, U+0173->u, U+0174->w, U+0175->w, U+0176->y, U+0177->y, U+0178->y, U+0179->z, U+017A->z, U+017B->z, U+017C->z, U+017D->z, U+017E->z, U+01A0->o, U+01A1->o, U+01AF->u, U+01B0->u, U+01CD->a, U+01CE->a, U+01CF->i, U+01D0->i, U+01D1->o, U+01D2->o, U+01D3->u, U+01D4->u, U+01D5->u, U+01D6->u, U+01D7->u, U+01D8->u, U+01D9->u, U+01DA->u, U+01DB->u, U+01DC->u, U+01DE->a, U+01DF->a, U+01E0->a, U+01E1->a, U+01E6->g, U+01E7->g, U+01E8->k, U+01E9->k, U+01EA->o, U+01EB->o, U+01EC->o, U+01ED->o, U+01F0->j, U+01F4->g, U+01F5->g, U+01F8->n, U+01F9->n, U+01FA->a, U+01FB->a, U+0200->a, U+0201->a, U+0202->a, U+0203->a, U+0204->e, U+0205->e, U+0206->e, U+0207->e, U+0208->i, U+0209->i, U+020A->i, U+020B->i, U+020C->o, U+020D->o, U+020E->o, U+020F->o, U+0210->r, U+0211->r, U+0212->r, U+0213->r, U+0214->u, U+0215->u, U+0216->u, U+0217->u, U+0218->s, U+0219->s, U+021A->t, U+021B->t, U+021E->h, U+021F->h, U+0226->a, U+0227->a, U+0228->e, U+0229->e, U+022A->o, U+022B->o, U+022C->o, U+022D->o, U+022E->o, U+022F->o, U+0230->o, U+0231->o, U+0232->y, U+0233->y, U+1E00->a, U+1E01->a, U+1E02->b, U+1E03->b, U+1E04->b, U+1E05->b, U+1E06->b, U+1E07->b, U+1E08->c, U+1E09->c, U+1E0A->d, U+1E0B->d, U+1E0C->d, U+1E0D->d, U+1E0E->d, U+1E0F->d, U+1E10->d, U+1E11->d, U+1E12->d, U+1E13->d, U+1E14->e, U+1E15->e, U+1E16->e, U+1E17->e, U+1E18->e, U+1E19->e, U+1E1A->e, U+1E1B->e, U+1E1C->e, U+1E1D->e, U+1E1E->f, U+1E1F->f, U+1E20->g, U+1E21->g, U+1E22->h, U+1E23->h, U+1E24->h, U+1E25->h, U+1E26->h, U+1E27->h, U+1E28->h, U+1E29->h, U+1E2A->h, U+1E2B->h, U+1E2C->i, U+1E2D->i, U+1E2E->i, U+1E2F->i, U+1E30->k, U+1E31->k, U+1E32->k, U+1E33->k, U+1E34->k, U+1E35->k, U+1E36->l, U+1E37->l, U+1E38->l, U+1E39->l, U+1E3A->l, U+1E3B->l, U+1E3C->l, U+1E3D->l, U+1E3E->m, U+1E3F->m, U+1E40->m, U+1E41->m, U+1E42->m, U+1E43->m, U+1E44->n, U+1E45->n, U+1E46->n, U+1E47->n, U+1E48->n, U+1E49->n, U+1E4A->n, U+1E4B->n, U+1E4C->o, U+1E4D->o, U+1E4E->o, U+1E4F->o, U+1E50->o, U+1E51->o, U+1E52->o, U+1E53->o, U+1E54->p, U+1E55->p, U+1E56->p, U+1E57->p, U+1E58->r, U+1E59->r, U+1E5A->r, U+1E5B->r, U+1E5C->r, U+1E5D->r, U+1E5E->r, U+1E5F->r, U+1E60->s, U+1E61->s, U+1E62->s, U+1E63->s, U+1E64->s, U+1E65->s, U+1E66->s, U+1E67->s, U+1E68->s, U+1E69->s, U+1E6A->t, U+1E6B->t, U+1E6C->t, U+1E6D->t, U+1E6E->t, U+1E6F->t, U+1E70->t, U+1E71->t, U+1E72->u, U+1E73->u, U+1E74->u, U+1E75->u, U+1E76->u, U+1E77->u, U+1E78->u, U+1E79->u, U+1E7A->u, U+1E7B->u, U+1E7C->v, U+1E7D->v, U+1E7E->v, U+1E7F->v, U+1E80->w, U+1E81->w, U+1E82->w, U+1E83->w, U+1E84->w, U+1E85->w, U+1E86->w, U+1E87->w, U+1E88->w, U+1E89->w, U+1E8A->x, U+1E8B->x, U+1E8C->x, U+1E8D->x, U+1E8E->y, U+1E8F->y, U+1E96->h, U+1E97->t, U+1E98->w, U+1E99->y, U+1EA0->a, U+1EA1->a, U+1EA2->a, U+1EA3->a, U+1EA4->a, U+1EA5->a, U+1EA6->a, U+1EA7->a, U+1EA8->a, U+1EA9->a, U+1EAA->a, U+1EAB->a, U+1EAC->a, U+1EAD->a, U+1EAE->a, U+1EAF->a, U+1EB0->a, U+1EB1->a, U+1EB2->a, U+1EB3->a, U+1EB4->a, U+1EB5->a, U+1EB6->a, U+1EB7->a, U+1EB8->e, U+1EB9->e, U+1EBA->e, U+1EBB->e, U+1EBC->e, U+1EBD->e, U+1EBE->e, U+1EBF->e, U+1EC0->e, U+1EC1->e, U+1EC2->e, U+1EC3->e, U+1EC4->e, U+1EC5->e, U+1EC6->e, U+1EC7->e, U+1EC8->i, U+1EC9->i, U+1ECA->i, U+1ECB->i, U+1ECC->o, U+1ECD->o, U+1ECE->o, U+1ECF->o, U+1ED0->o, U+1ED1->o, U+1ED2->o, U+1ED3->o, U+1ED4->o, U+1ED5->o, U+1ED6->o, U+1ED7->o, U+1ED8->o, U+1ED9->o, U+1EDA->o, U+1EDB->o, U+1EDC->o, U+1EDD->o, U+1EDE->o, U+1EDF->o, U+1EE0->o, U+1EE1->o, U+1EE2->o, U+1EE3->o, U+1EE4->u, U+1EE5->u, U+1EE6->u, U+1EE7->u, U+1EE8->u, U+1EE9->u, U+1EEA->u, U+1EEB->u, U+1EEC->u, U+1EED->u, U+1EEE->u, U+1EEF->u, U+1EF0->u, U+1EF1->u, U+1EF2->y, U+1EF3->y, U+1EF4->y, U+1EF5->y, U+1EF6->y, U+1EF7->y, U+1EF8->y, U+1EF9->y" | |
| FILE | |
| # capistrano | |
| capify! | |
| file 'config/deploy.rb', <<-FILE | |
| default_run_options[:pty] = true | |
| set :application, "#{app_name}" | |
| set :repository, "[email protected]:#{ask('GitHub username for the git repository?')}/#{app_name}.git" | |
| set :scm, "git" | |
| set :ssh_options, { :forward_agent => true } | |
| set :use_sudo, false | |
| set :domain, "#{ask('What is the servername for deployment?')}" | |
| set :user, "rails" | |
| set :branch, "master" | |
| set :deploy_via, :remote_cache | |
| set :deploy_to, "/var/www/\#{application}" | |
| role :app, domain | |
| role :web, domain | |
| role :db, domain, :primary => true | |
| desc 'restart' | |
| deploy.task :restart, :roles => :app do | |
| run "touch \#{current_path}/tmp/restart.txt" | |
| end | |
| after 'deploy:finalize_update', :roles => :app do | |
| run "ln -s \#{shared_path}/config/database.yml \#{release_path}/config/database.yml" | |
| end | |
| FILE | |
| # Commit all work so far to the repository | |
| git :init | |
| git :add => '.' | |
| git :commit => "-a -m 'Initial commit'" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment