[
ruby]
[
rails]
[
plugin]
[
rails_plugin]
error_message_on メソッドを使ってエラーメッセージを表示する場合に、ちょっとした問題に遭遇。
def error_message_on(object, method, prepend_text = "", append_text = "", css_class = "formError")
if errors = instance_variable_get("@#{object}").errors.on(method)
content_tag("div", "#{prepend_text}#{errors.is_a?(Array) ? errors.first : errors}#{append_text}", :class => css_class)
end
end
これだと、毎回、prepend_text、append_textを指定してメッセージを表示しないといけない・・・
これはめんどくさいと言うことで、プラグインを作ってみました。
続きを読む "error_message_onを、full_messageにするプラグイン" »
[
ruby]
[
rails]
[
plugin]
[
rails_plugin]
[
ActiveRecord]
日付のvalidateって標準では実装されてないんですね。何でだろう。
$./script/plugin list
を使って、それっぽいのを探してみる。
2分で発見。やっぱり誰かが先に作ってくれてました。
http://plugins.radrails.org/directory/show/22
$./script/plugin install validates_date_time
としてインストール。
続きを読む "validates_date_timeプラグイン" »
[
ruby]
[
rails]
[
plugin]
[
graph]
[
ruby_library]
Sparklinesは、rubyで、グラフを書くライブラリです。
railsで使えるgenelatorが提供されているので試しに使ってみました。
RMagickに依存しているので、先にgem等を使ってインストールしておく必要があります。
sudo gem install RMagick
sudo gem install sparklines
railsのアプリケーションのルートディレクトリに移動し、プラグインをインストールします。
さらに ./script/generate を使って、コントローラーを作成します。
./script/plugin install http://topfunky.net/svn/plugins/sparklines
# Generate the SparklinesController and functional test
./script/generate sparklines
これで、とりあえずrailsから利用可能な状態になります。
続きを読む "rubyでグラフ!(with Sparklines)" »
[
ruby]
[
gruff]
[
graph]
[
ruby_library]
rubyでグラフを描こう企画第二段。
今回はGruffを使用。
まずはgemを使ってインストール。
RMagickに依存してるので、それのインストールも忘れずに。
gem install gruff
参考サイト
続きを読む "rubyでグラフ!(with Gruff)" »
[
ruby]
[
gruff]
[
graph]
[
ruby_library]
rubyでグラフ!(with Gruff)の続き。
色を変えてみよう。と言うことでGruffの中身を見てみる。
def theme_37signals
@green = '#339933'
@purple = '#cc99cc'
@blue = '#336699'
@yellow = '#FFF804'
@red = '#ff0000'
@orange = '#cf5910'
@black = 'black'
@colors = [@yellow, @blue, @green, @red, @purple, @orange, @black]
self.theme = {
:colors => @colors,
:marker_color => 'black',
:font_color => 'black',
:background_colors => ['#d1edf5', 'white']
}
end
ここんな感じで自由に設定できるみたい。
続きを読む "rubyでグラフ!(with Gruff)(2)" »
[
rails]
[
migration]
migration を用いて、mysql の timestamp 型のカラムを含むテーブルを作ろうと下記のようなコードを書きました。
class MigTests < ActiveRecord::Migration
def self.up
create_table :migtests do |t|
t.column :last_update, :timestamp
end
end
def self.down
drop_table :migtests
end
end
で、実行してみるがここで問題発生。
作成されるテーブルの last_update カラムがDATETIME型になる。
で、少し調べてみると、
activerecord-1.14.4/lib/active_record/connection_adapters/mysql_adapter.rb
にある、native_database_types というメソッド内に定義されたHashで、型名をシンボルからデータベースのカラムタイプ名に変換しているようです。
こんな感じ。
{
:timestamp => { :name => "datetime" },
}
なんであえて timestamp 型を使ってないんだろう・・・
なにか事情があるのだろうか。
続きを読む "migration における mysql の timestamp型" »
[
ruby]
[
rails]
[
rails_plugin]
[
plugin]
[
ActiveRecord]
acts_as_paranoid
このプラグインを導入すると、削除する際に、実際に行を消すのではなく、その行の deleted_at カラムに、削除の時間が記録されるようになります。
検索時にも、findで生成されるSQLのWHERE節に、以下のような条件が自動的に付加されます。
(users.deleted_at IS NULL OR users.deleted_at > '2007-01-21 12:27:07')
この条件を見ればわかりますが、削除予約といった使い方もできます。
フラグを条件に加えるのって、ついつい忘れてしまいがちなので便利です。
find_with_deleted メソッドで削除されたものも検索対象になります。
続きを読む "ActiveRecord 削除フラグで削除するプラグイン" »
[
ruby]
[
rails]
[
config]
[
fastcgi]
最近は lighttpd + fastcgi が流行のようですが、やっぱり apache + fastcgi を使わざるを得ない人向け。
fastcgiを導入するとき、毎回同じ事に引っかかってる気がするのでまとめておきます。
1. mod_fastcgiと、The Development Kit のインストール
公式サイトから入手できます。
http://www.fastcgi.com/
2. apache の設定を編集
参考例。バーチャルホストの設定は各自の環境に合わせて行う。
LoadModule fastcgi_module libexec/httpd/mod_fastcgi.so
<IfModule mod_fastcgi.c>
FastCgiIpcDir /tmp/fcgi_ipc/
AddHandler fastcgi-script .fcgi
</IfModule>
<VirtualHost *:80>
ServerName rails
DocumentRoot /path/to/application/public/
ErrorLog /path/to/application/log/apache.log
<Directory /path/to/application/public/>
Options ExecCGI FollowSymLinks
AddHandler fastcgi-script .fcgi
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
続きを読む "rails で apache + fastcgi" »
[
ruby]
[
amazon]
amazon-ecs-0.5.0
AmazonのWEBサービスを利用するためのrubyのライブラリ。
gemで提供されているので入れてみる。
gem install amazon-ecs
設定はこんな感じ。とりあえずASINコードで検索してみる。
Amazon::Ecs.options = {:aWS_access_key_id => ["your developer token"], :AssociateTag => "associate_id", :country => :jp}
res = Amazon::Ecs.item_lookup("4088762096")
以下READMEから抜粋。
Amazon::Ecs.options = {:aWS_access_key_id => [your developer token]}
res = Amazon::Ecs.item_search('ruby', {:response_group => 'Medium', :sort => 'salesrank'})
res.is_valid_request?
res.has_error?
res.error
res.total_pages
res.total_results
res.item_page
res.items.each do |item|
item.get('asin')
item.get('itemattributes/title')
atts = item.get('itemattributes')
atts.get('title')
atts.get('author')
atts.get_array('author')
item.get_hash('smallimage')
reviews = item/'editorialreview'
reviews.each do |review|
Amazon::Element.get_hash(review)
Amazon::Element.get(review, 'source')
Amazon::Element.get(review, 'content')
end
end
参考URL
続きを読む "ruby で amazon WEBサービス" »
[
rails]
[
capistrano]
[
deploy]
システムメンテナンスのため、一時サービスを停止したいとき、Capistranoで簡単にメンテナンス画面を表示させる事ができます。
まずは、.htaccessを編集して、
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
1 : %{DOCUMENT_ROOT}/system/maintenance.html が存在し、
2 : 且つ、自分自身(実行ファイル自身)が maintenance.html でなければ、
3 : URLを/system/maintenance.html に書き換える。
という設定をします。(※番号は設定ファイルの行に対応)
rake remote:disable_web \
UNTIL="14:00 MST" \
REASON="a database upgrade"
上記のコマンドを実行すると、本番サーバー上の、CAPROOT/current/public/system (CAPROOT/shared/system へのシンボリックリンク) に、maintenance.html というファイルが生成されます。これで完了。
続きを読む "Capistrano で簡単にメンテナンス画面表示" »
[
capistrano]
[
rails]
[
deploy]
Capistrano のタスクはフックできます。
hoge というタスクがあれば、その前後で、before_hoge と after_hoge が呼ばれます。
それを検証されているエントリ。
http://d.hatena.ne.jp/Rommy/20061021/1161440420
続きを読む "Capistrano のタスクをフックする" »
[
ruby]
[
senna]
[
mecab]
[
全文検索]
Sennaをインストールしてみた。
インストールの流れ
- MeCab 0.81以降のインストール
- Sennaのインストール
- ruby バインディングのインストール
MeCabのインストール
http://mecab.sourceforge.net/#download
ここから、mecab本体のソースコードと、辞書をダウンロード。
デフォルトでEUCが使われるので、configureの際に以下のようにオプションを設定する。
./configure --with-charset=utf8
辞書のインストールの際も同様。
続きを読む "Sennaとrubyで全文検索(インストール編)" »
[
mecab]
[
ruby]
MeCabのRubyバインディングを試してみました。
まずは、下記のページを参考に、ダウンロードしてインストール。
続きを読む "MeCabのRubyバインディング" »
[
HyperEstraier]
[
全文検索]
Hyperestraier のセットアップ。
拙いながらスクリプトも書いてみました。
mkdir /var/hyperestraier
useradd -d /var/hyperestraier -s /sbin/nologin estraier
chown estraier:estraier /var/hyperestraier -R
sudo -u estraier estmaster init /var/hyperestraier
こんなのスクリプトにするまでもないね。
まあ作業ログってことで。
続きを読む "hyperestraierノードサーバーの起動スクリプト" »
[
HyperEstraier]
[
全文検索]
[
rails_plugin]
[
rails]
[
ruby]
acts_as_searchableプラグイン。
hyperestraierでモデルを全文検索できるようになります。
./script/plugin install svn://poocs.net/plugins/trunk/acts_as_searchable
例
class User < ActiveRecord::Base
acts_as_searchable :searchable_fields=>[:name, :introduce]
end
としておけば、name introduce カラムが検索の対象になります。
User.reindex!
User.estraier_connection.status
これでHyperEstraierインデックスが変更されます。
失敗してもエラーをはかないらしいので一応 status を確認しておく必要あり。
また、save, destroy等、モデルの変更があった際には、自動的にインデックスが変更されます。
検索方法はこんなかんじ。
User.fulltext_search('検索ワード')
参考サイト
続きを読む "rails でモデルを全文検索" »
[
rails_plugin]
[
rails]
[
ruby]
[
captcha]
[
RMagick]
validates_captchaは、rails で、画像認証 captcha ができるようになるプラグインです。
RMagickに依存していています。
インストール。
script/plugin install http://svn.2750flesk.com/plugins/trunk/validates_captcha
で、次に、設定ファイルと、必要ディレクトリを用意します。以下のコマンドを実行すればOK。
script/generate captcha config
script/generate captcha image_directory
script/generate captcha store_directory
config/captcha.yml で、ディレクトリは変えられますが、その場合は自分で mkdir しましょう。
続きを読む "rails で 画像認証 captcha" »
[
mysql]
mysql 4.1以降で日本語を使うための設定方法。
UTF8を使います。
/etc/my.cnf に以下のような記述を書き足しておく。
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character_set_server=utf8
skip-character-set-client-handshake
skip-character-set-client-handshake は、「サーバーの文字コード設定をクライアントでもそのまま使う」という意味らしい。
で、mysqlを再起動。
続きを読む "mysql で utf8 を使う" »
[
mysql]
mysql で utf8 を使う参照
mysqlの日本語設定をした際に、以前から運用しているDatabaseがある場合、環境変数、character_set_database が、utf8になっていない場合がある。(例えば、latin1になっている。)
この場合、TABLE の CHARSET が、UTF8になっていない可能性が高く、SELECT 結果の表示が文字化けしてしまったり、mysqldump の結果が文字化けしてしまったりといった問題が発生する。
mysqldumpの文字化けは、--default-character-set オプションをつけることで解決できる。
mysqldump -uUser -pPassword --compact --default-character-set=binary hageDb > hage.sql
続きを読む "mysqldump で文字化け" »
[
rails]
[
rails_plugin]
[
mysql]
[
enum]
enum-column というプラグインがあります。
これをインストールすることで、mysqlのenumカラムを使用できるようになります。
まずはインストール
./script/plugin install enum-column
DBのスキーマはこんな感じでを記述します。
create_table :enumerations, :force => true do |t|
t.column :severity, :enum, :limit => [:low, :medium, :high, :critical],
:default => :medium
t.column :color, :enum, :limit => [:red, :blue, :green, :yellow]
end
続きを読む "Rails で mysql の ENUM カラムを使用する" »
[
rails]
[
capistrano]
[
deploy]
http://i-am.web777.net/2007/01/capistrano.html
上記エントリーの続き
メンテナンス画面は、カレントディレクトリに maintenance.rhtml がある場合はこちらがテンプレートとして使用される。
単純に RAILS_ROOT に maintenance.rhtml を設置してもよいが、あまり綺麗じゃないので、少し disable_web タスクを少し変更してみる。
続きを読む "Capistrano で簡単にメンテナンス画面表示(2)" »
[
rails]
[
plugin]
model を検索する際に、デフォルトの順序を指定したい場合に使うプラグインを発見
http://blog.gwikzone.org/pages/ruby_on_rails_default_order_plugin
class Contact < ActiveRecord::Base
order_by :fields => ['last_name', 'first_name'], :mode => :desc
end
こんな感じで使うみたい。
続きを読む "ActiveRecordでデフォルトの並び順を指定" »
[
rails]
[
plugin]
acts_as_modified
モデルの変更を監視して、各 attribute が変更されたかどうかを確認することができます。
「あるカラムに変更があった際にだけ、なにかしらの処理を行う」などという場合に便利。
インストールは普通にすればOK
./script/plugin install acts_as_modified
続きを読む "rails で model の変更を監視するプラグイン" »
[
capistrano]
[
rails]
http://www.capify.org/
バージョンが2.1にあがって初めて使ったのでまとめておきます。
まずはインストール。
gem install -y capistrano
続きを読む "rails で Capistrano2.1 入門" »
[
rails]
[
capistrano]
前回の続きです
rails で Capistrano2.1 入門
今回は Capistrano で実行するタスクを作ってみようと思います。
config/deproy.rb に以下を追記。
Httpdを再起動するためのタスクです。
namespace :deploy do
task :restart_web_server, :roles => :web do
sudo "/etc/init.d/httpd restart", :as => "root"
end
end
続きを読む "rails で Capistrano2.1 入門(2) ~ タスクを作る" »
[
GoogleCalendar]
[
iCal]
[
ProjectPier]
ProjectPierはactiveCollabから派生したソフトウェアで、その特徴としてデザインがしっかりしており使い勝手が良いということが挙げられる。これはWeb2.0風に奇麗という訳ではない。シンプルでわかりやすいという事だ。
MOONGIFT様のブログにこんな記事を発見。
http://www.moongift.jp/2007/09/projectpier/
早速使ってみると、なるほど、これは簡単で使いやすい。おススメです。
プロジェクトを作る
→ タスクリストを作る
→ マイルストーンを切ってタスクリストを割り当てる
というごく単純な仕組みですがわかりやすいし導入には非常にいいなという印象を持ちました。
続きを読む "「ProjectPier」 の iCal が GoogleCalendar で文字化け" »