認証だけでなく、メールアドレスを取得するところまで解説してあります。
2008年11月13日
2008年11月12日
スナップ 2008/11/12
Cucumberがアツい
cucumberって知らなかったのですが、受け入れテストに利用できるテストツールのようです。(よくわかっていない)
サイトより。
Cucumberはプレインテキストで書かれた特徴を記述したドキュメントを実行するツールです。技術職ではないアナリスト、ドメインエキスパート、テスター、プログラマーを対象にしています。
だそうです。(^^;
Rails2系ででPOSTメソッドを使ったときに出るInvalidAuthenticityToken Error
を回避する方法です。
Railsにjpmobileを使ってモバイル環境を構築するときのメモやノウハウのまとめ
cucumberって知らなかったのですが、受け入れテストに利用できるテストツールのようです。(よくわかっていない)
サイトより。
Cucumber is a tool that can execute feature documentation written in plain text. Cucumber targets non technical business analysts, interaction designers, domain experts, testers (for the plain text part) and programmers (for the steps, which are written in Ruby).
Cucumberはプレインテキストで書かれた特徴を記述したドキュメントを実行するツールです。技術職ではないアナリスト、ドメインエキスパート、テスター、プログラマーを対象にしています。
だそうです。(^^;
Rails2系ででPOSTメソッドを使ったときに出るInvalidAuthenticityToken Error
を回避する方法です。
Railsにjpmobileを使ってモバイル環境を構築するときのメモやノウハウのまとめ
2008年11月10日
クリップ 2008/11/10
http://d.hatena.ne.jp/yuum3/20081109/1226212005
簡単にAjaxなUIが作れそうな気がします。
アスキーアートのダイアグラムを画像に変換「ditaa」
アイデアが面白い。簡単な仕様を書くのに使えそう
スタンドアロンマシンにRails環境の構築
ネットからgemなんかをつかってインストールできない環境(高度なセキュリティガードが施されている本番サーバなど)でローカルにソースを媒体で持ち込んでrails環境を構築する際の手順。
簡単にAjaxなUIが作れそうな気がします。
アスキーアートのダイアグラムを画像に変換「ditaa」
アイデアが面白い。簡単な仕様を書くのに使えそう
スタンドアロンマシンにRails環境の構築
ネットからgemなんかをつかってインストールできない環境(高度なセキュリティガードが施されている本番サーバなど)でローカルにソースを媒体で持ち込んでrails環境を構築する際の手順。
2008年11月08日
クリップ 2008/11/08
Django風データベース管理プラグイン「Rails DataBrowser」
他にもDBを管理するI/FとしてはNiftyが公開したActiveRecordBrowserがありますね。
Rails 2.1で複数DBに接続
2.1になってからmagic_multi_connectionが使えなくなり、Jrubyをつかって簡単に同様の機能を実現。
他にもDBを管理するI/FとしてはNiftyが公開したActiveRecordBrowserがありますね。
Rails 2.1で複数DBに接続
2.1になってからmagic_multi_connectionが使えなくなり、Jrubyをつかって簡単に同様の機能を実現。
2008年11月07日
ログローテーション
http://d.hatena.ne.jp/GARAPON/20081107/1226036816 ここでローテーションの方法についてのエントリがリンクされていたのですが、railsだけで解決しようとするといろいろ問題がありそう。そうなると
Railsアプリケーションのログをsyslogに記録する方法 というエントリーで紹介されているように syslogに吐くのが良さそうです。
本番運用するにはログローテーションは大事です。外注しているソフトハウスがあったとして、サーバの運用を任せているソフトハウスがあったとして、ログローテーションの設定もろくにやってないようなところと付き合うのはやめたほうがいいですね。
Railsアプリケーションのログをsyslogに記録する方法 というエントリーで紹介されているように syslogに吐くのが良さそうです。
本番運用するにはログローテーションは大事です。外注しているソフトハウスがあったとして、サーバの運用を任せているソフトハウスがあったとして、ログローテーションの設定もろくにやってないようなところと付き合うのはやめたほうがいいですね。
2008年11月06日
クリップ 2008/11/06
RailsとiPhoneを仲良くする「TankEngine」
TankEngineプラグインをインストールすると、format.iphoneと記述しておくと、iPhoneからアクセスしてきた時に専用のテンプレートで表示することができるらしい。
TankEngineプラグインをインストールすると、format.iphoneと記述しておくと、iPhoneからアクセスしてきた時に専用のテンプレートで表示することができるらしい。
2008年11月05日
2008年11月03日
2008年10月31日
マイコミジャーナル:Rails 2.2 誤解多いスレッドセーフ、公開前に理解
http://journal.mycom.co.jp/news/2008/10/30/028/
によると、Jrubyを使えばネイティブスレッドになるのでプロセスは一つで良いとあります。
ただ、大規模なRailsのサービスではmongrelのプロセスを監視して落ちたら再起動するような仕組みを用意しています。
1プロセスだと落ちたら再起動されるまでに他のプロセスが存在しないためサービスが止まってしまいます。もし1プロセスで十分さばけそうでも冗長化のために複数プロセス立ち上げておいた方が良い気がしますがどうでしょうね。
それともmongrelじゃなくてGlass Fish を使えば安定するとか?
Glass Fishは使ったこと無いのですが、いままでtomcatをコンテナにしたwebサービスは多数構築してきました。クラスタリングを導入するまではいかないサービスでは、tomcatだとめったに落ちないといってもたまに落ちたときにサービスが止まってしまうんですよね。
mongrelはtomcatより不安定だったとしてもそれを前提に落ちても再起動するしくみを用意したりするので、逆にサービスは止まらなかったりします。
jrubyをつかってmongrelを複数動かしてプロセスが死んだら再起動するってのが実現できれば大規模サービスに使えそうな気がします。
によると、Jrubyを使えばネイティブスレッドになるのでプロセスは一つで良いとあります。
さらにRailsをJRubyで実行させると、スレッドがネイティブスレッドとして処理されるためプロセスが1つだけでよくなる。Rails 2.2はRuby 1.9とJRuby 1.9に対応する予定だ。どこまで実用的に使えるかはRubyと比べるとデータ不足だが、JRuby on Railsでさらに性能の引き上げを調査してみるのも悪くない選択肢だ。
ただ、大規模なRailsのサービスではmongrelのプロセスを監視して落ちたら再起動するような仕組みを用意しています。
1プロセスだと落ちたら再起動されるまでに他のプロセスが存在しないためサービスが止まってしまいます。もし1プロセスで十分さばけそうでも冗長化のために複数プロセス立ち上げておいた方が良い気がしますがどうでしょうね。
それともmongrelじゃなくてGlass Fish を使えば安定するとか?
Glass Fishは使ったこと無いのですが、いままでtomcatをコンテナにしたwebサービスは多数構築してきました。クラスタリングを導入するまではいかないサービスでは、tomcatだとめったに落ちないといってもたまに落ちたときにサービスが止まってしまうんですよね。
mongrelはtomcatより不安定だったとしてもそれを前提に落ちても再起動するしくみを用意したりするので、逆にサービスは止まらなかったりします。
jrubyをつかってmongrelを複数動かしてプロセスが死んだら再起動するってのが実現できれば大規模サービスに使えそうな気がします。
2008年10月30日
blog clip at 2008/10/30
これからRailsに関するblogのエントリをクリップしていこうかと思います。
generate/migration:add_column_to_table と remove_column_from_table
AttachmentFuプラグインの日本語対応化
Rails 2.2RCがリリースされました
rails 2.1.1 から render => :file の仕様が変わっています
Railsアプリケーション開発の基盤に「BaseApp」
Jpmobile で user_agent を設定してテストするには
P.S.
いちいちリンクを張るのがめんどくさい。専用のブックマークアプリ+ブックマークレットをつくるかなあ。。
generate/migration:add_column_to_table と remove_column_from_table
AttachmentFuプラグインの日本語対応化
Rails 2.2RCがリリースされました
rails 2.1.1 から render => :file の仕様が変わっています
Railsアプリケーション開発の基盤に「BaseApp」
Jpmobile で user_agent を設定してテストするには
P.S.
いちいちリンクを張るのがめんどくさい。専用のブックマークアプリ+ブックマークレットをつくるかなあ。。
2008年09月08日
スレッドプールきたー
http://blogs.sun.com/cinnabar/entry/rails_2_2_and_connection
ざっくりと引用。
ActiveRecordでコネクションプーリングが実現されると確実にRoRの適応範囲は広がりますね。
たとえば、私がコネクションプーリングがなくて断念したのものにクローラーがあります。
マルチスレッドに対応していないことも忘れて、WEBサイトをクロールしてDBに格納するプログラムをARで書いたのですが動かなくてがっくりしたことがあります。
ほかにもDB Storeのセッション管理で良く出るconnectionリセットの不具合もこれで治るのではないかと期待しています。
すくなくともDB Storeの不具合が解消されればお客さんのシステムにも安心して提案できるようになります。
ざっくりと引用。
C・ナッターのスレッドセーフRailsに関するブログ記事が大きな話題になっていますが、まもなくそのスレッドセーフであるRails2.2が登場します。
この2.2からスレッドセーフになることにより、以前取り上げた通り、従来まではActiveRecordではデータベース接続が1つで使い回していたものが、コネクションプーリングを行うことができるようになるようです。
2.2からはdatabase.ymlにpoolパラメータが追加され、以下のような設定でプール数を設定可能になります。
ActiveRecordでコネクションプーリングが実現されると確実にRoRの適応範囲は広がりますね。
たとえば、私がコネクションプーリングがなくて断念したのものにクローラーがあります。
マルチスレッドに対応していないことも忘れて、WEBサイトをクロールしてDBに格納するプログラムをARで書いたのですが動かなくてがっくりしたことがあります。
ほかにもDB Storeのセッション管理で良く出るconnectionリセットの不具合もこれで治るのではないかと期待しています。
すくなくともDB Storeの不具合が解消されればお客さんのシステムにも安心して提案できるようになります。
2008年08月20日
memcachedのコネクションが閉じない
rails 2.0.2 のセッション管理をmemcachedにしたところ、サービスをしばらく稼働させておくとmemcachedとのコネクションが大量に残ったままrailsサービスがフリーズします。
んー、なんでだろう。。ググったけど同じような症状は見つからない。。
memcachedの問題とは思えないのでrailsに原因があると思うのですが何から調べれば良いものやら。。困った。
んー、なんでだろう。。ググったけど同じような症状は見つからない。。
memcachedの問題とは思えないのでrailsに原因があると思うのですが何から調べれば良いものやら。。困った。
2008年07月24日
gem install mysql が mac osx で通らない。。
(追記)
http://ore.saizensen.net/archives/category/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/ruby
これを参考にソースを修正したらmake installは通ったが gem listをやっても一覧に出てこない。うーむ。
(追記終わり)
http://d.hatena.ne.jp/kurusaki/20080716/p1
こちらにかかれたあったとおり、やってもtigerで通らない。(ちなみに本番環境のcent os5ではとおった)
http://ore.saizensen.net/archives/category/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88/ruby
これを参考にソースを修正したらmake installは通ったが gem listをやっても一覧に出てこない。うーむ。
(追記終わり)
http://d.hatena.ne.jp/kurusaki/20080716/p1
こちらにかかれたあったとおり、やってもtigerで通らない。(ちなみに本番環境のcent os5ではとおった)
sudo env ARCHFLAGS="-arch i386" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Password:
Updating metadata for 204 gems from http://gems.rubyforge.org/
............................................................................................................................................................................................................
complete
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
checking for mysql_ssl_set()... yes
checking for mysql.h... yes
creating Makefile
make
gcc -I. -I. -I/usr/local/lib/ruby/1.8/i686-darwin8.11.1 -I. -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H -I/usr/local/mysql/include -Os -arch i386 -fno-common -fno-common -g -O2 -pipe -fno-common -c mysql.c
mysql.c: In function ‘Init_mysql’:
mysql.c:2015: error: ‘ulong’ undeclared (first use in this function)
mysql.c:2015: error: (Each undeclared identifier is reported only once
mysql.c:2015: error: for each function it appears in.)
mysql.c:2015: error: parse error before numeric constant
mysql.c:2018: error: parse error before numeric constant
make: *** [mysql.o] Error 1
Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out
2008年06月03日
クララにmod_railsをインストール。。。出来なかった。
先に書いたようにmongrelがやたらと落ちるのでmod_railsを試そうとおもい、mod_rails + インストールでググるてインストールnトライしたんですが、yumが入ってなくて必要なパッケージを追加できなかったりと。いろいろ試したんですが成功しませんでした。
時間があったら再トライしてみます。
時間があったら再トライしてみます。
2008年06月01日
クララオンラインのVPSでRails が落ちまくりな件
mongrelですが、ここ最近ずっと半日に一回プロセスが死んでます。
アクセスほとんどないはずなんですが。以前も酷かったのがしばらくはましになったと思ったら、ここのところは本当に頻繁に落ちます。
ここのところずっと早朝にプロセス監視のアラートメールで起こされて寝不足です。amazon ec2がもっと安ければ移行するんですけどね。。
ほかに良いものはないだろうか。。真剣に探さねば。
http://www.clara.co.jp/
アクセスほとんどないはずなんですが。以前も酷かったのがしばらくはましになったと思ったら、ここのところは本当に頻繁に落ちます。
ここのところずっと早朝にプロセス監視のアラートメールで起こされて寝不足です。amazon ec2がもっと安ければ移行するんですけどね。。
ほかに良いものはないだろうか。。真剣に探さねば。
http://www.clara.co.jp/
2008年04月15日
Mac OSX(tiger)でGoogle App Engine SDKを動かす
ruby とはぜんぜん関係ありませんが、Google App Engineが面白そうなのでSDKをいれて試してみました。
(残念ながらアカウントは待ち、まだもらえてません)
1. Pythonのインストール
TigerのPythonはバージョンが古いのでver 2.5を別途インストールします。
http://www.python.org/download/
ここからdmg形式でダウンロードできます。
http://www.python.org/ftp/python/2.5.2/python-2.5.2-macosx.dmg
古いバージョンのpythonが呼ばれないように環境変数のPATHの順番に気をつけてください。/usr/local/binが /usr/bin より前にあれば大丈夫です。
2. sdk のインストール
http://code.google.com/appengine/downloads.html
ここからSDKをダウンロードします。こちらもdmg形式なので簡単にインストールできます。(pythonが古いとインストーラが警告を出して終了してしまいます)
3. サンプルの実行
http://code.google.com/appengine/docs/gettingstarted/
Getting Startedに従ってサンプルを実行したら、あっけなく動作しました。
googleアカウントによる認証のテストもストレージのテストも簡単にSDKで出来てしまいます。アカウントの入力ページはgoogleのサイトではなくローカルにある入力フォームが自動的に呼ばれます。
実際に動かしたファイルを参考までにアップしておきます。
これー>google_app_engin_sample.tar.gz
参考:
google app developerによるデモ
(残念ながらアカウントは待ち、まだもらえてません)
1. Pythonのインストール
TigerのPythonはバージョンが古いのでver 2.5を別途インストールします。
http://www.python.org/download/
ここからdmg形式でダウンロードできます。
http://www.python.org/ftp/python/2.5.2/python-2.5.2-macosx.dmg
古いバージョンのpythonが呼ばれないように環境変数のPATHの順番に気をつけてください。/usr/local/binが /usr/bin より前にあれば大丈夫です。
2. sdk のインストール
http://code.google.com/appengine/downloads.html
ここからSDKをダウンロードします。こちらもdmg形式なので簡単にインストールできます。(pythonが古いとインストーラが警告を出して終了してしまいます)
3. サンプルの実行
http://code.google.com/appengine/docs/gettingstarted/
Getting Startedに従ってサンプルを実行したら、あっけなく動作しました。
googleアカウントによる認証のテストもストレージのテストも簡単にSDKで出来てしまいます。アカウントの入力ページはgoogleのサイトではなくローカルにある入力フォームが自動的に呼ばれます。
実際に動かしたファイルを参考までにアップしておきます。
これー>google_app_engin_sample.tar.gz
参考:
google app developerによるデモ
2008年04月01日
ruby でHTMLを解析してアンカーテキストとリンクURLを抽出
参考にしたURL:
http://tam.qmix.org/wiki/Hpricot.html
http://labs.airs.co.jp/2007/7/11/site_explorer_api_hpricot_seo
簡単にできました。
e.inner_html がアンカーテキストになりますが、UTF-8に変換し、タグをHTMLのタグを消去しています。
つぎは階層を追っかけてクローラーっぽい動きを実現させてみますかね。
http://tam.qmix.org/wiki/Hpricot.html
http://labs.airs.co.jp/2007/7/11/site_explorer_api_hpricot_seo
簡単にできました。
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'kconv'
doc = Hpricot(open(ARGV[0]))
(doc/'a').each { |e|
s = e.inner_html.toutf8.gsub(/<.*?>/,'')
next if s == nil || s == ''
print "["
print s
print "]\n"
print e.attributes['href']
print "\n"
}
e.inner_html がアンカーテキストになりますが、UTF-8に変換し、タグをHTMLのタグを消去しています。
$ ruby crawler.rb http://nasuta.seesaa.net/ | head -10
[Nasuta開発ブログ]
http://nasuta.seesaa.net/
[Nasua]
http://www.nasuta.jp/
[http://www.nasuta.jp/]
http://www.nasuta.jp/
[ruby でRSSの解析 その2 はてぶのデータエクスポートデータの解析]
http://nasuta.seesaa.net/article/91728241.html
[http://hatena.g.hatena.ne.jp/bbs/3/13]
http://hatena.g.hatena.ne.jp/bbs/3/13
つぎは階層を追っかけてクローラーっぽい動きを実現させてみますかね。
2007年06月23日
acts_as_paranoid
MLより。これは使えそう。備忘録と。
論理削除に関しては、acts_as_paranoidっていうプラグインがあります。
http://ar-paranoid.rubyforge.org/
# IEだと見られないかもしれない