ref
Person.count("age > 26")
Person.count('id', :conditions => "age > 26")
# Performs a COUNT(id)
Person.count(:all, :conditions => "age > 26")
# Performs a COUNT(*) (:all is an alias for '*')
Person.count(:conditions => "age > 26 AND job.salary > 60000", :include => :job)
# because of the named association, it finds the DISTINCT count using LEFT OUTER JOIN.
Person.count(:conditions => "age > 26 AND job.salary > 60000", :joins => "LEFT JOIN jobs on jobs.person_id = person.id")
# finds the number of rows matching the conditions and joins.
2006年12月31日 星期日
Associations on Rails
API
EXAMPLES
Member.find(:all, :include=>[:group, :profile])
Member.count(:joins=>"INNER JOIN groups ON groups.id = members.group_id ...")
Rails & Java
EXAMPLES
Member.find(:all, :include=>[:group, :profile])
Member.count(:joins=>"INNER JOIN groups ON groups.id = members.group_id ...")
Rails & Java
2006年12月21日 星期四
Rails Localization
reference
1.gem install gettext
2.application.rb
require 'gettext/rails'
GetText.output_charset = "UTF-8"
3.Error Message 中文化
4.app/test.rb
module ActiveRecord
class Errors
begin
@@default_error_messages.update( {
:inclusion => "ist nicht in Liste g羹ltiger Optionen enthalten",
:exclusion => "ist reserviert",
:invalid => "ist ung羹ltig",
:confirmation => "entspricht nicht der Best瓣tigung",
:accepted => "muss akzeptiert werden",
:empty => "不能是空的",
:blank => "darf nicht leer sein",
:too_long => "ist zu lang (h繹chstens %d Zeichen)",
:too_short => "ist zu kurz (mindestens %d Zeichen)",
:wrong_length => "hat eine falsche L瓣nge (es sollten %d Zeichen
sein)",
:taken => "ist schon vergeben",
:not_a_number => "不能是空的",
})
end
end
end
module ActionView #nodoc
module Helpers
module ActiveRecordHelper
def error_messages_for(object_name, options = {})
options = options.symbolize_keys
object = instance_variable_get("@#{object_name}")
unless object.errors.empty?
content_tag("div",
content_tag(
options[:header_tag] || "h2",
"一共有 #{pluralize(object.errors.count, "error")} 問題 "
) +
content_tag("p", "請更正:") +
content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }),
"id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
)
end
end
end
end
end
5.config/enviorment.rb
require "#{RAILS_ROOT}/app/test.rb"
1.gem install gettext
2.application.rb
require 'gettext/rails'
GetText.output_charset = "UTF-8"
3.Error Message 中文化
4.app/test.rb
module ActiveRecord
class Errors
begin
@@default_error_messages.update( {
:inclusion => "ist nicht in Liste g羹ltiger Optionen enthalten",
:exclusion => "ist reserviert",
:invalid => "ist ung羹ltig",
:confirmation => "entspricht nicht der Best瓣tigung",
:accepted => "muss akzeptiert werden",
:empty => "不能是空的",
:blank => "darf nicht leer sein",
:too_long => "ist zu lang (h繹chstens %d Zeichen)",
:too_short => "ist zu kurz (mindestens %d Zeichen)",
:wrong_length => "hat eine falsche L瓣nge (es sollten %d Zeichen
sein)",
:taken => "ist schon vergeben",
:not_a_number => "不能是空的",
})
end
end
end
module ActionView #nodoc
module Helpers
module ActiveRecordHelper
def error_messages_for(object_name, options = {})
options = options.symbolize_keys
object = instance_variable_get("@#{object_name}")
unless object.errors.empty?
content_tag("div",
content_tag(
options[:header_tag] || "h2",
"一共有 #{pluralize(object.errors.count, "error")} 問題 "
) +
content_tag("p", "請更正:") +
content_tag("ul", object.errors.full_messages.collect { |msg| content_tag("li", msg) }),
"id" => options[:id] || "errorExplanation", "class" => options[:class] || "errorExplanation"
)
end
end
end
end
end
5.config/enviorment.rb
require "#{RAILS_ROOT}/app/test.rb"
2006年12月16日 星期六
2006年12月14日 星期四
2006年12月12日 星期二
tinyint in Rails
By default, the MysqlAdapter will consider all columns of type tinyint(1) as boolean. If you wish to disable this emulation (which was the default behavior in versions 0.13.1 and earlier) you can add the following line to your environment.rb file:
ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans = false
ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans = false
2006年12月5日 星期二
TOMCAT最佳化
資料來源:
1.Tomcat性能調整
2.java.lang.OutOfMemoryError
3.JVM調整機制
以下針對體院的系統最佳化:
1.catalina.bat
Tomcat默認可以使用的記憶體為128MB,在較大型的應用項目中,這點記憶體是不夠的,需要調大。
在文件{tomcat_home}/bin/catalina.bat,增加如下設置:
JAVA_OPTS='-Xms【初始化記憶體大小】 -Xmx【可以使用的最大記憶體】'
需要把這個兩個參數值調大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化記憶體為256MB,可以使用的最大記憶體為512MB
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
2.server.xml
Tomcat5
maxThreads
Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。
acceptCount
指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
connnectionTimeout
網路連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
minSpareThreads
Tomcat初始化時創建的線程數。
maxSpareThreads
一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
3.調整JVM之參數
-Xms,-Xmx一般設為同樣大小。 800m
-Xmn 是將NewSize與MaxNewSize設為一致。320m
-XX:PerSize 64m
-XX:NewSize 320m 此值設大可調大新對象區,減少Full GC次數
-XX:MaxNewSize 320m
-XX:NewRato NewSize設了可不設。4
-XX: SurvivorRatio 4
-XX:userParNewGC 可用來設置並行收集
-XX:ParallelGCThreads 可用來增加並行度 4
-XXUseParallelGC 設置後可以使用並行清除收集器
-XX:UseAdaptiveSizePolicy 與上面一個聯合使用效果更好,利用它可以自動優化新域大小以及救助空間比值
1.Tomcat性能調整
2.java.lang.OutOfMemoryError
3.JVM調整機制
以下針對體院的系統最佳化:
1.catalina.bat
Tomcat默認可以使用的記憶體為128MB,在較大型的應用項目中,這點記憶體是不夠的,需要調大。
在文件{tomcat_home}/bin/catalina.bat,增加如下設置:
JAVA_OPTS='-Xms【初始化記憶體大小】 -Xmx【可以使用的最大記憶體】'
需要把這個兩個參數值調大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化記憶體為256MB,可以使用的最大記憶體為512MB
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
2.server.xml
Tomcat5
maxThreads
Tomcat使用線程來處理接收的每個請求。這個值表示Tomcat可創建的最大的線程數。
acceptCount
指定當所有可以使用的處理請求的線程數都被使用時,可以放到處理隊列中的請求數,超過這個數的請求將不予處理。
connnectionTimeout
網路連接超時,單位:毫秒。設置為0表示永不超時,這樣設置有隱患的。通常可設置為30000毫秒。
minSpareThreads
Tomcat初始化時創建的線程數。
maxSpareThreads
一旦創建的線程超過這個值,Tomcat就會關閉不再需要的socket線程。
3.調整JVM之參數
-Xms,-Xmx一般設為同樣大小。 800m
-Xmn 是將NewSize與MaxNewSize設為一致。320m
-XX:PerSize 64m
-XX:NewSize 320m 此值設大可調大新對象區,減少Full GC次數
-XX:MaxNewSize 320m
-XX:NewRato NewSize設了可不設。4
-XX: SurvivorRatio 4
-XX:userParNewGC 可用來設置並行收集
-XX:ParallelGCThreads 可用來增加並行度 4
-XXUseParallelGC 設置後可以使用並行清除收集器
-XX:UseAdaptiveSizePolicy 與上面一個聯合使用效果更好,利用它可以自動優化新域大小以及救助空間比值
2006年11月28日 星期二
LINK
UPLOAD_FILE
http://manuals.rubyonrails.com/read/chapter/57
http://wiki.rubyonrails.org/rails/pages/HowtoUploadFiles
http://www.ruby.oss.tw/html/modules/newbb/viewtopic.php?topic_id=318&forum=4#forumpost804
Ruby on Rails (ROR)書籍下载位址
http://www.cnblogs.com/hardrock/archive/2006/08/18/480668.html
Agile Web Development with Rails 翻译
HowToSetupSybaseAdapterOnRails
http://manuals.rubyonrails.com/read/chapter/57
http://wiki.rubyonrails.org/rails/pages/HowtoUploadFiles
http://www.ruby.oss.tw/html/modules/newbb/viewtopic.php?topic_id=318&forum=4#forumpost804
Ruby on Rails (ROR)書籍下载位址
http://www.cnblogs.com/hardrock/archive/2006/08/18/480668.html
Agile Web Development with Rails 翻译
HowToSetupSybaseAdapterOnRails
訂閱:
文章 (Atom)