Archive for category Ruby
thinking-sphinx的排序
Posted by Neo in Ruby, Ruby On Rails on 2011/11/30
sphinx本身支持datetime、integer、float、string等类型的排序,但是thinking-sphinx在定义索引的时候给人造成的误区简直让人想骂娘!
这行是假象,默认是用字符串排序,即使accepted_id 是整型的!
正确写法
这里声明accepted_id是个属性,支持integer类型的排序和索引!
唉,看文档是王道啊
commitments 承诺
晚上读了读mysql2这个gem的代码,凌乱!
mysql的ruby client支持autocommit的设置,mysql的gem我没实验过
也不知道commit是通过commitments演化来的,还是
commitments是根据commit演化来的,但是从命名的风格和程序上来说,确实respect
承诺,如机器里面的二进制一般,不崩盘,不改本色
resque使用
Posted by Neo in Ruby, Ruby On Rails on 2011/11/18
resque 是ruby和redis结合做的一个消息队列,稳定性和成熟性还有待考察,但是,用起来真是很爽
安装
或者rails3直接写到Gemfile里面,然后bundle install
在rails或者ruby 的app里导入项目,然后require到resque和job文件
执行rake resque:work QUEUE=’*'或者针对个别的job单独启动,用起来太舒服了!!!!!!
不能忘了配置redis:)
案例
在app目录下建立jobs目录
在RAILS_ROOT/config/initializers/resque.rb中加入
建立一个可执行的ruby文件job1.rb
@queue = :job1
def self.perform(arg)
p "your code here!!!"
end
end
执行
可以看到”your code here!!!” 类的字符串输出
ruby irb 中文乱码
ruby版本: ruby1.9.2
系统: mac os 10.6
原因:irb输入中文不识别,fcker’s question!
解决方法:
下载readline6.1,当前最新的版本应该
解压,config,make, make install
安装完成后,就要去你的ruby目录下,如果用rvm,那么去:
cd ~/.rvm/src/ruby-(version)/ext/readline
安装方式:
ruby extconf.rb
make && make install
ok
rails migration 独立使用
Posted by Neo in Ruby, Ruby On Rails on 2011/03/19
将migration的rake任务从rails里面抠出来!!!
ROOT = File.expand_path(File.dirname(__FILE__))
database_config = File.expand_path(File.dirname(__FILE__) + "/database.yml")
log_path = File.expand_path(File.dirname(__FILE__) + "/migration.log")
namespace :db do
task :environment => :load_config do
ActiveRecord::Base.establish_connection(YAML.load(File.new(database_config))[DB_ENV])
ActiveRecord::Base.logger = Logger.new(log_path)
end
task :load_config do
require 'active_record'
ActiveRecord::Base.configurations = YAML.load(File.new(database_config))
end
desc '创建数据库'
task :create => :load_config do
create_database(ActiveRecord::Base.configurations[DB_ENV])
end
desc '删除数据库'
task :drop => :load_config do
config = ActiveRecord::Base.configurations[DB_ENV]
begin
drop_database(config)
rescue Exception => e
puts "Couldn't drop #{config['database']} : #{e.inspect}"
end
end
desc "迁移数据库"
task :migrate => :environment do
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
ActiveRecord::Migrator.migrate("migrate", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
end
desc '重置数据库'
task :reset => [ 'db:drop', 'db:setup' ]
desc '重置数据库并且执行seed'
task :setup => [ 'db:create', 'db:schema:load', 'db:seed' ]
desc '执行 seed.rb'
task :seed => :environment do
seed_file = File.expand_path(File.dirname(__FILE__) + "/seed.rb")
load(seed_file) if File.exist?(seed_file)
end
namespace :schema do
desc "创建schema.rb"
task :dump => :environment do
require 'active_record/schema_dumper'
File.open(File.expand_path(File.dirname(__FILE__) + "/schema.rb"), "wb") do |file|
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
end
Rake::Task["db:schema:dump"].reenable
end
desc "load schema.rb到数据库"
task :load => :environment do
file = File.expand_path(File.dirname(__FILE__) + "/schema.rb")
if File.exists?(file)
load(file)
else
abort %{error}
end
end
end
namespace :structure do
desc "导出sql文件"
task :dump => :environment do
abcs = ActiveRecord::Base.configurations
case abcs[DB_ENV]["adapter"]
when "mysql", "oci", "oracle"
ActiveRecord::Base.establish_connection(abcs[DB_ENV])
File.open(ROOT + "/#{DB_ENV}_structure.sql", "wb") do |f|
f << ActiveRecord::Base.connection.structure_dump
end
else
raise "不支持数据库类型: '#{abcs["test"]["adapter"]}'"
end
if ActiveRecord::Base.connection.supports_migrations?
File.open(ROOT + "/#{DB_ENV}_structure.sql", "a") do |f|
f << ActiveRecord::Base.connection.dump_schema_information
end
end
end
end
end
def drop_database(config)
case config['adapter']
when 'mysql'
ActiveRecord::Base.establish_connection(config)
ActiveRecord::Base.connection.drop_database config['database']
else
$stderr.puts "删除数据库出错"
end
end
def create_database(config)
case config['adapter']
when 'mysql'
@charset = 'utf8'
@collation = 'utf8_unicode_ci'
begin
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
ActiveRecord::Base.connection.create_database(config['database'], :charset => (@charset), :collation => (@collation))
ActiveRecord::Base.establish_connection(config)
rescue
$stderr.puts "创建数据库出错"
end
else
$stderr.puts "擦,就支持mysql"
end
end
目录结构
|-- Rakefile
|-- database.yml
|-- migrate
| `-- 20110124014258_old_version.rb
| `-- 20110124014259_old_version.rb
`-- schema.rb
近期评论