Created
March 6, 2009 19:49
Revisions
-
langalex revised this gist
Mar 14, 2009 . 1 changed file with 0 additions and 1 deletion.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -33,7 +33,6 @@ run "rm public/robots.txt" run "rm public/images/rails.png" run "rm -f public/javascripts/*" # get jquery and plugins run "curl -L http://jqueryjs.googlecode.com/files/jquery-1.3.2.js > public/javascripts/jquery.js" -
langalex revised this gist
Mar 8, 2009 . 1 changed file with 76 additions and 55 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -33,7 +33,7 @@ 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.rb # get jquery and plugins run "curl -L http://jqueryjs.googlecode.com/files/jquery-1.3.2.js > public/javascripts/jquery.js" @@ -105,6 +105,9 @@ </ul> </div> <div id="content"> <%- if flash[:notice] -%> <div id="flash"><%= flash[:notice] %></div> <%- end -%> <%= yield %> </div> </body> @@ -234,21 +237,16 @@ file "app/controllers/user_sessions_controller.rb", <<-FILE class UserSessionsController < ApplicationController require_user :only => :destroy resource_controller actions :new, :create create do flash "Login successful!" success.wants.html do redirect_back_or_default account_url end end def destroy current_user_session.destroy flash[:notice] = "Logout successful!" @@ -260,37 +258,21 @@ def destroy file 'app/controllers/users_controller.rb', <<-FILE class UsersController < ApplicationController require_user :only => [:show, :edit, :update] resource_controller actions :new, :create, :show, :edit, :update create do flash "Account registered!" success.wants.html do redirect_back_or_default account_url end end update.flash "Account updated!" def object @object ||= current_user end end FILE @@ -382,13 +364,9 @@ def redirect_back_or_default(default) FILE file 'app/views/users/show.html.erb', <<-FILE <p>Welcome <%=h @user.login %></p> <%= link_to 'Edit Account', edit_account_path %> FILE file 'app/views/user_sessions/new.html.erb', <<-FILE @@ -417,14 +395,32 @@ def redirect_back_or_default(default) As a user I want to log in Scenario: log in Given a user "alex" with the password "testtest" When I go to the start page And I follow "Log in" And I fill in "alex" for "Login" And I fill in "testtest" for "Password" And I press "Login" Then I should see "Welcome alex" And I should see "Login successful!" Scenario: log out Given a user "alex" with the password "testtest" And "alex" is logged in When I go to the account page And I follow "Log out" Then I should see "Log in" And I should see "Logout successful!" Scenario: edit account Given a user "alex" with the password "testtest" And "alex" is logged in When I go to the account page And I follow "Edit Account" And I fill in "joe" for "Login" And I press "Update" Then I should see "Account updated!" FILE file 'features/sign_up.feature', <<-FILE @@ -433,14 +429,25 @@ def redirect_back_or_default(default) As a user I want to sign up Scenario: sign up successfully When I go to the start page And I follow "Sign up" And I fill in "alex" for "Login" And I fill in "testtest" for "Password" And I fill in "testtest" for "Password confirmation" And I press "Register" Then I should see "Welcome alex" Scenario: signing up fails because login is taken Given a user "alex" When I go to the start page And I follow "Sign up" And I fill in "alex" for "Login" And I fill in "testtest" for "Password" And I fill in "testtest" for "Password confirmation" And I press "Register" Then I should not see "Welcome alex" And I should see "Login ist bereits vergeben" FILE file 'features/step_definitions/user_steps.rb', <<-FILE @@ -451,13 +458,27 @@ def redirect_back_or_default(default) Given /^a user "(.+)" with the password "(.+)"$/ do |login, password| User.make :login => login, :password => password, :password_confirmation => password end Given /a user "([^"]+)"$/ do |login| User.make :login => login end Given /^"([^"]+)" is logged in$/ do |login| When 'I go to the start page' When 'I follow "Log in"' When "I fill in \\\"\#{login}\\\" for \\\"Login\\\"" When 'I fill in "testtest" for "Password"' When 'I press "Login"' end FILE file 'features/support/paths.rb', <<-FILE def path_to(page_name) case page_name when /the start page/i root_path when /the account page/i account_path else raise "Can't find mapping from \"\#{page_name}\" to a path." end -
langalex revised this gist
Mar 8, 2009 . 1 changed file with 102 additions and 7 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -1,13 +1,27 @@ # rails application template for generating customized rails apps # # == requires == # # * rails 2.3+, rspec, cucumber, culerity (langalex-culerity gem), machinist # # == a newly generated app using this template comes with == # # * working user registration/login via authlogic, cucumber features to verify that it works # * rspec/cucumber/culerity for testing # * thinking_sphinx configuration # * german localization # * capistrano deployment script # * jquery and blueprint css set up # * a blueprints.rb for machinist # # == how to use == # # * install the required gems (and jruby for culerity) # * generate a new app: rails my_new_app -m http://gist.github.com/raw/75038/a14ddd8be39b3d7705550b7fbd3a9b39cda63d58/upstream_rails_application_template.rb # * run the features to verify everything is working: rake features # # == TODO == # * add forgot password method # * make registration/login use resource_controller app_name = `pwd`.split('/').last.strip @@ -166,8 +180,33 @@ run "rm features/step_definitions/webrat_steps.rb" generate("culerity") # enable culerity, disable webrat file 'features/support/env.rb', <<-FILE ENV["RAILS_ENV"] = "test" require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') require 'cucumber/rails/world' require 'cucumber/formatters/unicode' require 'cucumber/rails/rspec' require 'culerity' require 'machinist' require RAILS_ROOT + '/spec/blueprints' FILE # machinist file 'spec/blueprints.rb', <<-FILE User.blueprint do login "joe" password "testtest" password_confirmation "testtest" end FILE # skip cucumber/rspec load errors on production server [:cucumber, :rspec].each do |service| file "lib/tasks/#{service}.rake", <<-FILE @@ -180,7 +219,7 @@ end # authlogic login/signup 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' @@ -369,6 +408,62 @@ def redirect_back_or_default(default) <% end %> FILE # login/signup features file 'features/log_in.feature', <<-FILE Feature: log in In order to use the system As a user I want to log in Scenario: log in Given a user "alex" with the password "testtest" When I go to the start page And I follow "Log in" And I fill in "alex" for "Login" And I fill in "testtest" for "Password" And I press "Login" Then I should see "Welcome alex" FILE file 'features/sign_up.feature', <<-FILE Feature: sign up In order to use all the platform's features As a user I want to sign up Scenario: sign up When I go to the start page And I follow "Sign up" And I fill in "alex" for "Login" And I fill in "testtest" for "Password" And I fill in "testtest" for "Password confirmation" And I press "Register" Then I should see "Welcome alex" FILE file 'features/step_definitions/user_steps.rb', <<-FILE Before do User.delete_all end Given /^a user "(.+)" with the password "(.+)"$/ do |login, password| User.make :login => login, :password => password, :password_confirmation => password end FILE file 'features/support/paths.rb', <<-FILE def path_to(page_name) case page_name when /the start page/i root_path else raise "Can't find mapping from \"\#{page_name}\" to a path." end end FILE # migrations rake "db:migrate" -
langalex revised this gist
Mar 8, 2009 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -89,7 +89,7 @@ <li><%= link_to 'Log in', new_user_session_path %></li> <%- end -%> </ul> </div> <div id="content"> <%= yield %> </div> -
langalex revised this gist
Mar 7, 2009 . 1 changed file with 13 additions and 0 deletions.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -166,6 +166,19 @@ run "rm features/step_definitions/webrat_steps.rb" generate("culerity") # skip cucumber/rspec load errors on production server [:cucumber, :rspec].each do |service| file "lib/tasks/#{service}.rake", <<-FILE begin #{File.read("lib/tasks/#{service}.rake")} rescue LoadError => e STDERR.puts "could not load #{service}." end FILE end # authlogic -
langalex renamed this gist
Mar 6, 2009 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
langalex revised this gist
Mar 6, 2009 . 1 changed file with 0 additions and 1 deletion.There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -1,4 +1,3 @@ # comes with: # * working user registration/login via authlogic # * rspec/cucumber/culerity for testing -
langalex renamed this gist
Mar 6, 2009 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
langalex created this gist
Mar 6, 2009 .There are no files selected for viewing
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 charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,542 @@ # 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 (clemens@railway.at) 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, "git@github.com:#{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'"