Archive for category Ruby On Rails
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类型的排序和索引!
唉,看文档是王道啊
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!!!” 类的字符串输出
rails devise hook
Posted by Neo in Ruby On Rails on 2011/10/02
1. 登录后的
user.update_attribute(:authentication_token, false)
auth.cookies.delete('remember_token')
end
2.验证后的,在remember的时候可以向cookie里面塞入一个token
scope = options[:scope]
remember_me = auth.params[scope].try(:fetch, :remember_me, nil)
if Devise::TRUE_VALUES.include?(remember_me) && record.respond_to?(:remember_me!)
record.remember_me!
auth.cookies['remember_token'] = {
:value => record.authentication_token,
:expires => record.remember_expires_at
}
end
end
rails3.1-invalid multibyte char (US-ASCII) (SyntaxError)
Posted by Neo in Ruby On Rails on 2011/08/06
# encoding: utf-8
require File.expand_path('../application', __FILE__)
# Initialize the rails application
Review::Application.initialize!
WillPaginate::ViewHelpers.pagination_options[:previous_label] = '«上一页'
WillPaginate::ViewHelpers.pagination_options[:next_label] = '下一页»'
rails3.1必须用ruby1.9去跑,然而1.9的编码处置非常2
必须文件头加上encoding才能顺利运行,否则就出现invalid multibyte char (US-ASCII) (SyntaxError)
当然,上面的配置在3.1中必然会报错,文件头也就是文件的第一行(new shit!!!),应该将# Load the rails application删掉,将encoding: utf-8放在第一行,fckkkkkkkkkkkkkk
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
近期评论