📄 data.rake
字号:
# Reads a CSV file from the data/ dir.def csv_file filename path = File.join File.dirname( __FILE__ ), '../data', "#{filename}.csv" File.open( path ).readend# Loads CSV data into the appropriate table.def load_from_csv table_name, data column_clause = nil is_header = false cnx = ActiveRecord::Base.connection ActiveRecord::Base.silence do reader = CSV::Reader.create data columns = reader.shift.map { |column_name| cnx.quote_column_name(column_name) } column_clause = columns.join(', ') reader.each do |row| next if row.first.nil? # skip blank lines raise "No table name defined" unless table_name raise "No header defined" unless column_clause values_clause = row.map { |v| cnx.quote(v).gsub('\\n', "\n").gsub('\\r', "\r") }.join(', ') sql = "INSERT INTO #{table_name} (#{column_clause}) VALUES (#{values_clause})" cnx.insert sql end endendnamespace :globalize do desc 'Reset the Globalize data' task :reset => [ :teardown, :setup ] desc 'Create Globalize database tables and load locale data' task :setup => [ :create_tables, :load_locale_data ] desc 'Remove all globalize data' task :teardown => :drop_tables desc 'Create Globalize database tables' task :create_tables => :environment do raise "Task unavailable to this database (no migration support)" unless ActiveRecord::Base.connection.supports_migrations? ActiveRecord::Base.connection.create_table :globalize_countries, :force => true do |t| t.column :code, :string, :limit => 2 t.column :english_name, :string t.column :date_format, :string t.column :currency_format, :string t.column :currency_code, :string, :limit => 3 t.column :thousands_sep, :string, :limit => 2 t.column :decimal_sep, :string, :limit => 2 t.column :currency_decimal_sep, :string, :limit => 2 t.column :number_grouping_scheme, :string end ActiveRecord::Base.connection.add_index :globalize_countries, :code ActiveRecord::Base.connection.create_table :globalize_translations, :force => true do |t| t.column :type, :string t.column :tr_key, :string t.column :table_name, :string t.column :item_id, :integer t.column :facet, :string t.column :language_id, :integer t.column :pluralization_index, :integer t.column :text, :text end ActiveRecord::Base.connection.add_index :globalize_translations, [ :tr_key, :language_id ] ActiveRecord::Base.connection.add_index :globalize_translations, [ :table_name, :item_id, :language_id ] ActiveRecord::Base.connection.create_table :globalize_languages, :force => true do |t| t.column :iso_639_1, :string, :limit => 2 t.column :iso_639_2, :string, :limit => 3 t.column :iso_639_3, :string, :limit => 3 t.column :rfc_3066, :string t.column :english_name, :string t.column :english_name_locale, :string t.column :english_name_modifier, :string t.column :native_name, :string t.column :native_name_locale, :string t.column :native_name_modifier, :string t.column :macro_language, :boolean t.column :direction, :string t.column :pluralization, :string t.column :scope, :string, :limit => 1 end ActiveRecord::Base.connection.add_index :globalize_languages, :iso_639_1 ActiveRecord::Base.connection.add_index :globalize_languages, :iso_639_2 ActiveRecord::Base.connection.add_index :globalize_languages, :iso_639_3 ActiveRecord::Base.connection.add_index :globalize_languages, :rfc_3066 # Dirty hack to force initalization of pg indexes if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL' ActiveRecord::Base.connection.execute "SELECT nextval('public.globalize_countries_id_seq')" ActiveRecord::Base.connection.execute "SELECT nextval('public.globalize_translations_id_seq')" ActiveRecord::Base.connection.execute "SELECT nextval('public.globalize_languages_id_seq')" end end desc 'Drops Globalize database tables' task :drop_tables => :environment do raise "Task unavailable to this database (no migration support)" unless ActiveRecord::Base.connection.supports_migrations? ActiveRecord::Base.connection.drop_table :globalize_countries ActiveRecord::Base.connection.drop_table :globalize_translations ActiveRecord::Base.connection.drop_table :globalize_languages end desc 'Load locale data' task :load_locale_data => :environment do load_from_csv 'globalize_countries', csv_file( :country_data ) load_from_csv 'globalize_languages', csv_file( :language_data ) load_from_csv 'globalize_translations', csv_file( :translation_data ) end desc 'Purge locale data' task :purge_locale_data => :environment do Globalize::Country.destroy_all Globalize::Language.destroy_all Globalize::Translation.destroy_all endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -