2008年06月25日

[Ruby] /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

みんないれよう rubygems 1.2 - 8時40分が超えられないとあったので、「よしUpdateしよう」と一念発起してやってみた。

# gem update --system

で、なんとなくgemのバージョンでもみるかーとおもい、アップデート完了後に
$ gem -v
とすると、
/usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

えぇぇ・・・。

たぶん、/usr/bin/gemにrequire 'rubygems'とか書けばいいんやろうけど、/usr/bin以下を見てみると、gem18とかいうのが作成されていた。
試しにバージョンを見てみると、
$ gem18 -v
1.2.0
なんだってー!!

ということは、gem update --systemによってgem18がインストールされたのか。

よくよく考えてみると、今まで使ってたgemは、emergeでインストールしたもの。

恐る恐る、emerge search rubygems・・・。
$ emerge search rubygems
*** Deprecated use of action 'search', use '--search' instead
Searching...
[ Results for search key : rubygems ]
[ Applications found : 1 ]

* dev-ruby/rubygems
Latest version available: 0.9.4-r2
Latest version installed: 0.9.4
Size of files: 200 kB
Homepage: http://rubyforge.org/projects/rubygems/
Description: Centralized Ruby extension management system
License: Ruby


ぎゃーーー!!

って、当然ですよね・・・。

さてさてどうしたものか。


とりあえず、emergeの管理下から、rubygemsを外しておこう・・・。
posted by yu at 00:13 | Comment(0) | TrackBack(0) | Ruby

2008年05月13日

[Ruby] プロ野球の試合結果を取得して、Officeのイルカにしゃべらせてみた!

まず、NPB(日本プロ野球機構)のサイトから試合情報を取得するスクリプト.

require 'rubygems'
require 'hpricot'
require 'open-uri'

class NPB

NPB_URL = "http://bis.npb.or.jp/2008/games/"

def games(proxy=nil)
return parse(get(proxy))
end

private
def get(proxy=nil)
return Hpricot( open(NPB_URL, :proxy => proxy ).read )
end

def parse(doc)
# チーム名を取得
teams = []
(doc/"td.contentsTeam").each do |e|
teams << e.inner_text.slice(0, 8)
end
# 得点を取得
runs = []
(doc/"td.contentsRuns").each do |e|
runs << e.inner_text
end

# ごにょごにょ
matches = []
while teams.size != 0 && runs.size != 0
matches << teams.slice!(0,2).zip(runs.slice!(0,2)).inject({}){|h, k| h[k[0]] = k[1]; h}
end
return matches
end

end


[{"阪神"=>100, "読売"=>0}, {....}, {....}, {....}, ....]みたいな感じでハッシュの要素を持つ配列の形で試合情報を取得することができる。
途中、かなり無理矢理な感じですが・・・。
(あとで直そう・・・)


次に、イルカを呼ぶほうのコード。
「Growlで通知するといいよ!」とかいうのをブログで見ると悔しくなるので、今回はイルカにしゃべらせます。

イルカの呼び方は, artonさんのブログ記事(イルカと遊ぼう)を参考にしました。

require 'win32ole'
require 'npb'

KYLE = "C:\\Program Files\\Microsoft Office\\OFFICE11\\DOLPHIN.ACS"

games = NPB.new.games

agent = WIN32OLE.new("Agent.Control")
agent.connected = true
r = agent.Characters.load("dol", KYLE)

while r.status != 0 && r.status != 1
puts 'loading...'
end
dol = agent.Characters.Character("dol")
dol.Activate(2);

dol.show();
games.each do |g|
g.keys.each do |i|
dol.speak(i + ": " + g[i])
end
dol.speak("=============")
dol.play("IDLE(1)")
end
dol.hide();

sleep(15)


両方のスクリプトを同じディレクトリにおいて, 後者のスクリプトを実行すると, こんな感じでイルカが左上に出てくる.

dolphin.bmp


以上!!

思いつきでがーっと書いたので、めちゃくちゃです・・・。
あとでちゃんと直そっと・・・。

もっとシンプルに記述できるよ!って方は、ぜひぜひよろしくお願いします。

追記(2008/05/20)
github使ってみました。
http://github.com/yutsuda/ruby-npb/tree/master
posted by yu at 01:56 | Comment(6) | TrackBack(0) | Ruby

2008年05月01日

[Ruby] Re:日付のRangeを週に切り出すスクリプト

日付のRangeを週に切り出すスクリプト - はこべにっき#に対抗して、僕も書いてみた。


彼は、

1 2 3 4 5
--------------------
6 7 8 9 10 11 12
--------------------
13 14 15 16 17 18 19
--------------------
20 21 22 23 24 25 26
--------------------
27 28 29 30


としようとしていたけれども、僕は

30 31 1 2 3 4 5
--------------------
6 7 8 9 10 11 12
--------------------
13 14 15 16 17 18 19
--------------------
20 21 22 23 24 25 26
--------------------
27 28 29 30 1 2 3

とかしてみる。

そのほうが、週ごとに切り易いし。


ってことで、コード。昼休みにちゃちゃっと書いてみた。

require 'date'

def gen_weeks(m_start, m_end)
month = (m_start-m_start.wday .. m_end+(7-m_end.wday-1)).to_a
weeks = []
while month.length != 0
week = []
1.upto(7){ week << month.shift }
weeks << week
end
return weeks
end

m_start = Date.new(2008, 5, 1) # 月初め
m_end = Date.new(2008, 5, 31) # 月終り

weeks = gen_weeks(m_start, m_end)



ってことで、授業受けてきます。
posted by yu at 13:20 | Comment(2) | TrackBack(0) | Ruby

2008年04月28日

[Ruby] ancestorsメソッドが便利

継承関係を調べるとき、
cls = Integer
ancestors = []
while cls do
ancestors.push(cls)
cls = cls.superclass
end

みたいなことをやって、
[Integer, Numeric, Object]
とか出て喜んでたけど、

Integer.ancestors
とかいうのがあるのを、レポート書いてるときに発見した。

これだと、結果は、
[Integer, Precision, Numeric, Comparable, Object, Kernel]
となる。

モジュールも含まれるみたい。

「継承関係を示せ」的なレポート課題のお供にどうぞ。

posted by yu at 18:19 | Comment(0) | TrackBack(0) | Ruby

2008年04月04日

[Ruby] 指定したディレクトリ以下のゴミファイルを一掃するスクリプト

プログラミングのリハビリついでにRubyで簡単なスクリプトを書いてみた。

内容はありふれたもので、引数で指定したディレクトリ以下にあるゴミファイル(#gomi.rb#とか、gomi.rb~といったもの)を一掃するスクリプトです。

昔、友達が仕事でコレつくってたなぁ。あの時はシェルスクリプトやったかな?今ならPerl書きそうやけど(笑)
もう3~4年前か・・・早いものです。



昔話はおいといて、さっさとスクリプトを晒しちゃいます。

sweep.rb
#!/usr/bin/env ruby

class Sweeper

PATTERN = ["*~",
"#*#"]

def retrieve(dir)
trash = Array.new

if File::ftype(dir) != "directory"
puts "this is not a directory."
exit
end

Dir::glob(make_trash_pattern(dir)).each{|f| trash.push(f) }
puts trash

if trash.size == 0
puts "trash file is not found."
else
puts "found #{trash.size} trash files."
puts "do you want to sweep these files? (y/n)"
sweep(trash) if gets.split(//)[0]=="y"
end

end

def sweep(trash)
trash.each{|t| File::delete(t) }
puts "#{trash.size} trash files are sweeped!!"
end

def make_trash_pattern(dir)
return PATTERN.map{|p| dir+"/**/"+p }.join("\0")
end

end

sweeper = Sweeper.new

sweeper.retrieve(ARGV.shift)


PATTERNがゴミファイルの形式で、このスクリプトの場合だと、#gomi.rb#やgomi.rb~といったファイルが削除対象となります。

違う形式のファイルを削除したい場合は、PATTERNを変更してあげてください。

使い方は、
$ ruby sweep.rb ~/
みたいに、引数にディレクトリを指定してあげるだけです。


Rubyを書ける偉い方、もっといい書き方があればご指南ください。
よろしくお願いしますm(__)m
posted by yu at 17:10 | Comment(0) | TrackBack(0) | Ruby

2007年12月01日

[Ruby] PHP-PEARのパッケージを全部インストールするスクリプト

研究室の実験用サーバを構築しています。
PHPのことはぜんぜんわからないので、とりあえず、PEARのパッケージを全部インストールしてみようと。

シェルスクリプトでサクッと書こうと思ったけれども、なんとなくRubyで。

#!/usr/bin/env ruby

`pear remote-list`.each_line do |p|
puts p.split(/\s+/)[0]
`pear install -f #{p.split(/\s+/)[0]}`
end


一応、-fをつけて全部インストール。
-fをはずすと、stableだけインストールのはず。

PHPわからないので、へんなこと言っているかも。
posted by yu at 19:53 | Comment(0) | TrackBack(1) | Ruby

2007年03月25日

[PRagger]ちょっと気になってること。

pragger_spelling.bmp
posted by yu at 01:54 | Comment(2) | TrackBack(0) | Ruby

2007年03月01日

[PRagger] notify::ejectを書いてみた。

本家にもあるnotify::ejectを作ってみた。

とりあえず、Linux版。

まず、以下のディレクトリ構造をとる。

pragger
+-- plugin/
+-- notify/
+-- eject.rb
+-- eject/
+-- linux.rb
+-- mswin32.rb
+-- darwin.rb
+-- freebsd.rb

linux.rb以外未実装。また研究の合間にでも書きます。

このような状態で、
$ ruby pragger.rb -l
とすると、
notify::ejectという文字列がどこかに表示されるはず。

さて、問題のファイルの中身ですが、まず、eject.rb
#!/usr/bin/env ruby
# eject.rb
#

class Eject
def initialize()
@platform = RUBY_PLATFORM.split("-")[1]
end

def eject_handler()
require 'plugin/notify/eject/' + @platform
eject()
end
end

def eject(config, data)
Eject.new.eject_handler
end


次に、プラットフォームごとのコード。
linux.rb
def eject()
system "eject"
end


あとは、yamlで
- module: notify::eject

としてやるだけ。たぶんちゃんと動くことでしょう。
タグ:ruby PRagger
posted by yu at 03:39 | Comment(0) | TrackBack(0) | Ruby

2007年02月23日

[PRagger] tracを見てみると、、、

久しぶりにPRaggerのリビジョンがどれくらい上がったのか確認するために、アクセスしてみた。

トップに「各界の反応」というのが追加されていたので、それをクリックしてみた。




爆笑した。

http://pragger.ikejisoft.com/wiki/FeedBacks

posted by yu at 21:37 | Comment(0) | TrackBack(0) | Ruby

2006年12月22日

[Ruby][Gem] gem install wirble

Ruby inside: Wirble: Tab-Completion and Syntax Coloring for irb

を参考に、irbの出力に色を付けるのを入れる。

# gem install -y wirble --remote
とかして、インストールを行う。

そして、~/.irbrcに以下を記述。
require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize


こんな感じになる。
colorize-irb.png

結構きれいくていいかんじ!


タグ:ruby Gem Gentoo
posted by yu at 21:28 | Comment(0) | TrackBack(0) | Ruby

2006年09月21日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(10日目)

ラストの10日目は、サービスイン -サーバーを公開しよう-
ってことで、サーバーにRailsアプリを公開。サーバを持っていないので、本を読んでのメモ。

  1. サーバを用意

  2. プロジェクトをデプロイ

  3. Webサーバの設定


サーバを用意
サーバを用意。Railsアプリは初期化に時間がかかる。
それに対処するためにApacheにFastCGIというモジュールを組み合わせる。


プロジェクトをデプロイ
  1. プロジェクトをアップロード&展開

  2. データベースのセットアップ

  3. 環境変数RAILS_ENVproductionを指定
  4. パーミッションを設定


Webサーバの設定
仮想ホストとかの設定をするなら、設定後にApacheの再起動。

タグ:ruby Rails
posted by yu at 19:28 | Comment(0) | TrackBack(1) | Ruby

2006年09月20日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(9日目)

9日目は、アプリケーションの開発2 -Google Maps APIを使った地図検索を追加しよう-
ってことで、8日目の続きで、今回はGoogle Maps APIを使って、地図を表示するようにする。

  1. Google Maps APIを利用できるようにする

  2. CSISシンプル塩コーディング実験を利用するコンポーネントを追加

  3. レストラン情報に経緯度のフィールドを追加する

  4. いろいろとプログラムを修正

  5. 日本語化

  6. アプリケーションを実行


Google Maps APIを利用できるようにする
Googleアカウントを取得する。
http://www.google.co.jp/apis/maps/にいき、APIを使うためのライセンスキーを発行してもらう。


CSISシンプルジオコーディング実験を利用するコンポーネントを追加
http://pc035.tkl.iis.u-tokyo.ac.jp/~sagara/geocode/に行く。
メニューから、シンプルジオコーディング実験をクリック。
利用規約を呼んで同意すれば、利用する手続きをしていく。
次に、lib/下に、CSISシンプルジオコーディングを利用するコンポーネントの作成をする。


レストラン情報に経緯度のフィールドを追加する
>ruby script\generate migraton
をつかって、migration用のビルドファイルを作成する。
フィールドの追加は、
add_column :テーブル名, :カラム名, :型名
フィールドの削除は、
remove_column :テーブル名, :カラム名, :型名

できたら、
>rake migrate
を実行し、テーブルを更新。


いろいろとプログラムを作る
以下のことをできるようにする。
  • 経緯度を入力できるようにする
  • Google Mapsを表示するようにする
  • Google Mapsを利用するレストランの一覧表示を作る
これができたら、コントローラを修正。

日本語化
_()で日本語化をしたいところをかこんで、po/moファイルを作成。


アプリケーションを実行
WEBrickを実行。エラーがあったら、修正していく。
タグ:ruby Rails
posted by yu at 17:34 | Comment(0) | TrackBack(0) | Ruby

2006年09月19日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(8日目)

8日目は、アプリケーションの開発1 -フォトブログを作ってみよう-
ってことで、9日目と合わせて、2日がかりでアプリケーションを開発する。


  1. プロジェクトの作成

  2. データベースの作成、設定

  3. LoginEngineプラグインのインストールと環境設定と日本語設定

  4. モデルの作成

  5. テーブルの作成

  6. コントローラとビューの作成

  7. いろいろとプログラムを作る

  8. 日本語化

  9. アプリケーションを実行


プロジェクトの作成
railsコマンドをつかって、プロジェクトの作成。


データベースの作成、設定
lib/tasks/下にrakeファイルを作成。作成したら、rakeコマンドでタスクを実行。
終わったら、config/database.ymlを編集し、データベースの設定を行う。


LoginEngineプラグインのインストールと環境設定と日本語設定
>ruby script\plugin install engines
>ruby script\plugin install login_engine

インストールが終わったら、config/environment.rbをいじって、日本語とLoginEngineプラグインの設定をする。
app/helpers/application_helper.rbも、LoginEngineが使えるように修正。
最後に、app/controllers/application.rbを修正して、Ruby-GetTextが使えるようにする。


モデルの作成
>ruby script\generate model モデル名


テーブルの作成
db/migrate/下に作成されるファイルを編集し、テーブルを作成する準備をする。
>rake migrate
を実行して、テーブルを作成。


コントローラとビューの作成
>ruby script\generate controller コントローラ名 アクション名 [アクション名...]


いろいろとプログラムを作る
いろいろといじる。コントローラとか、ビューとか。
あまり一気につくらず、いじった箇所が完成したら、WEBrickを起動し、ちゃんと動くか確認していくとデバッグしていく。

日本語化
_()で日本語化をしたいところをかこんで、po/moファイルを作成。


アプリケーションを実行
WEBrickを実行。エラーがあったら、修正していく。

タグ:Rails ruby
posted by yu at 18:55 | Comment(0) | TrackBack(0) | Ruby

2006年09月18日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(7日目)

7日目は、外部Webサーバーと連携する -Yahoo!の検索サービスを利用して画像を取り込んでみよう-

Yahoo!の検索Webサービスを利用してみる。

開発手順は、
  1. Yahoo!デベロッパーネットワークに参加し、アプリケーションIDを登録

  2. プロジェクトの作成

  3. Yahoo!検索サービスのクライアントプログラムの作成

  4. environment.rbにアプリケーションIDを登録

  5. ビューの修正

  6. コントローラの修正

  7. パーシャルrhtmlを作成

  8. 画像の表示に効果をつける

  9. アプリケーション起動


Yahoo!デベロッパーネットワークに参加し、アプリケーションIDを登録
まず、Yahoo! JAPAN IDを取得。
次に、ログインして、Yahoo!デベロッパーネットワークへ進む。
そこで、アプリケーションIDの登録を行う。IDは確認できるので、適当に40字以内でぐちゃぐちゃに打つのがいいらしい。


プロジェクトの作成
6日目のやつをコピー。


Yahoo!検索サービスのクライアントプログラムの作成
lib/下に、ファイルを作成。yahoo_search.rbとかいう名前にしておく。


environment.rbにアプリケーションIDを登録
config/environment.rbに、以下の3行を追加。
module Yahoo
APPID = 'アプリケーションID'
end


ビューの修正
Ajaxを利用して、画像を表示できるように、show.rhtmlを修正
link_to_remoteメソッドを使って、リクエストをする


コントローラの修正
コントローラに、さっきつくったyahoo_search.rbを読み込むように修正する。
require 'yahoo_search'
と先頭に書く。


パーシャルrhtmlを作成
関連画像表示用のパーシャルrhtmlを作成する。ここにはYahoo!Webサービスのクレジットを埋め込まなければならないため、文字コードをUTF-8にする。


画像の表示に効果をつける
image_tagメソッドに、:onmouseout:onmouseoverを追加。
:onmouseoutは、マウスがタグから外にでたときに
:onmouseoverは、マウスがタグの内側にはいったときに


アプリケーション起動
WEBrickを起動し、動作の確認を行う。
タグ:ruby Rails
posted by yu at 22:52 | Comment(0) | TrackBack(0) | Ruby

2006年09月17日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(6日目)

6日目は、アプリケーションに認証機能を追加する -プラグインを使ってみよう-
ってことで、LoginEngineをプラグインを利用して、認証機能を追加してみる。

  1. プロジェクトの作成

  2. プラグインのインストール

  3. LoginEngineプラグインのための環境設定

  4. LoginEngineプラグインのためのテーブル作成

  5. LoginEngineプラグインのためにプログラムを修正

  6. 日本語化が必要なファイルのコピー

  7. 日本語化する文字列の登録

  8. LoginEngineをプロジェクトへ取り込む設定

  9. po/moファイルの作成

  10. アプリケーションを実行



プロジェクトの作成
5日目のプロジェクトをコピー。


プラグインのインストール
EnginesプラグインとLoginEngineプラグインをインストールする。
Enginesプラグインは、プラグインの実装に必要な共通部分をプラグインとしてまとめたもの
LoginEngineプラグインは、Enginesプラグイン上で動く、認証機能を提供するプラグイン。

Enginesプラグインのインストール。
>ruby script\plugin install engines
LoginEngineプラグインのインストール。
>ruby script\plugin install login_engine


LoginEngineプラグインのための環境設定
config/environment.rbを編集。
# Include your application configuration below
の下にLoginEngine用の設定を書く。


LoginEngineプラグインのためのテーブル作成
LoginEngineプラグインが用意してくれているmigrationを実行。
>rake db:migrate:engines



LoginEngineプラグインのためにプログラムを修正
app/controllers/application.rbを編集。LoginEngineをロードするようにする。
require 'login_engine'
を先頭に追加。
include LoginEngine
をクラスの先頭に追加。
クラスにユーザ検証メソッドを追加する。(before_filterを使う)

次に、app/helpers/application_helper.rbに、LoginEngineプラグインの機能を埋め込む。
module ApplicationHelper
include LoginEngine
include AuthenticatedSystem
end



日本語化が必要なファイルのコピー
vendor/plugins下から日本語化したいファイルをコピーしてくる。


日本語化する文字列の登録
日本語にしたい文字列を_()で囲む。


LoginEngineをプロジェクトへ取り込む設定
.rhtmlファイルをいじったり、パーシャルrhtmlを作る。


po/moファイルの作成
5日目参照。rakeを使って、タスクを実行などなど。


アプリケーションを実行
WEBrickを起動。


タグ:ruby Rails
posted by yu at 23:49 | Comment(0) | TrackBack(0) | Ruby

2006年09月16日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(5日目)

5日目は、アプリケーションの日本語化 -Ruby-GetTextを使って日本語を表示しよう-
ということで、4日目のプロジェクトを日本語化してみる。

手順は、
  1. Ruby-GetTextをインストール

  2. プロジェクトの作成

  3. コントローラの修正

  4. モデルの修正

  5. ビューの修正

  6. po/moファイル処理タスクの登録

  7. potファイルの作成

  8. poファイルを作成

  9. poファイルに日本語を登録する

  10. moファイルの作成

  11. アプリケーション起動



Ruby-GetTextをインストール
>gem install gettext
プロキシを使ってる環境なら、
>gem install gettext -p "http://(プロキシサーバのアドレス):(ポート番号)"
これでもダメなら、
>set http_proxy="http://(プロキシサーバのアドレス):(ポート番号)"
>gem install gettext
とかすると、いけるかも。
選択肢がいっぱいでてくるが、Windows環境ならmswin32のものを選ぶ。


プロジェクトの作成
4日目のやつをコピー。


コントローラの修正
Ruby-GetTextを利用するために、railsライブラリとmoファイルを読み込む処理を書く。


モデルの修正
日本語化する文字列を_()またはN_()で囲む


ビューの修正
日本語化する文字列を_()またはN_()で囲む


po/moファイル処理タスクの登録
lib/tasks/下にrakeファイルを作成。
poファイルのテンプレートを作成するにはGetTextクラスのupdate_pofiles、moファイルを作成するには、GetTextクラスのcreate_mofilesを使う

potファイルの作成
Rakeる。

poファイルを作成
po/下に作成されたpotファイルを、po/ja/下にコピー。拡張子をpoにする。


poファイルに日本語を登録する
作成したpoファイルを編集して、日本語を登録。


moファイルの作成
poファイルの編集が終わったら、Rakeる。


アプリケーション起動
WEBrickを起動。

タグ:ruby Rails
posted by yu at 18:03 | Comment(0) | TrackBack(0) | Ruby

2006年09月15日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(4日目)

4日目は、ファイルのアップロードと表示 -フォトアルバムを作ってみよう-
ってことで、ファイルのアップロードの仕方を勉強した。
今日のはちょっと量が多い。

  1. プロジェクトの作成
  2. データベース作成(Rake)
  3. データベースの設定
  4. 日本語環境の設定
  5. モデル作成
  6. テーブル作成(migrate)
  7. コントローラとビューの作成
  8. モデルをいじる
  9. プログラムの作成


プロジェクトの作成
いつものようにrailsコマンドで作成


データベース作成(Rake)
lib/tasks/下にファイルを作り、rakeを実行


データベースの設定
config/database.ymlを編集。


日本語環境の設定
いつものように設定をする。
$KCODEとかbefore_filterとか


モデル作成
以下のようにするとモデルを作成できる。
>ruby script\generate model モデル名


テーブル作成(migrate)
db/migrate/下に作成されたファイルをいじる。そして、
>rake migrate
を実行


コントローラとビューの作成
これはいつもと同じ。
>ruby script\generate controller コントローラ名 アクション名 [アクション名...]


モデルをいじる
モデルをプログラムする。ファイルはapp/models/下に作成されている。
一気に作らず、必要になったら少しずつ組み立てていく。一気にコーディングすると、エラーがでたとき探すのに手間がかかる。
validates_presence_ofは、引数で指定したシンボルに対応するフィールドに値が設定されているかを確かめるもの。

プログラムの作成
各アクションを実装。モデルと同様に、少しずつ順番に組む。
verifyを用いて、ブラウザから正しいメソッドで呼ばれたかを検証する。
ファイルをいじるときは、Fileを。ディレクトリをいじるときは、Dirを使う。


タグ:ruby Rails
posted by yu at 22:43 | Comment(0) | TrackBack(0) | Ruby

2006年09月14日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(3日目)

3日目は、Ajaxを利用する -計算機を作ってみよう-
ということで、RailsでAjax!
  1. プロジェクトの作成
  2. (日本語環境の設定)
  3. コントローラとビューの作成
  4. ビューをいじる
  5. パーシャルhtmlの作成
  6. コントローラをいじる
  7. 動作確認
という手順で開発を進めた。

プロジェクトの作成
いつものようにプロジェクトを作成
>rails プロジェクト名


(日本語環境の設定)
今回は日本語を扱わないため、省いてもよいが、癖をつけるために一応やった。


コントローラとビューの作成
いつものように、
>ruby script\generate controller コントローラ名 アクション名 [アクション名...]

ビューをいじる
app/views/コントローラ名/下にあるrhtmlファイルをいじる。
Ajaxるために、javascript_include_tagobserve_fieldlink_to_remoteメソッドを使った。


パーシャルhtmlの作成
パーシャルhtmlとは、部分的に更新を行うためのhtml。ファイル名は_を最初につける。
例) _result_list.rhtml


コントローラをいじる
app/controlers/下に作成されたファイルをいじる。


動作確認
WEBrickを起動して、動作確認
>ruby script\server


だんだんRailsに慣れてきた気がする。


タグ:ruby Rails AJAX
posted by yu at 23:45 | Comment(0) | TrackBack(0) | Ruby

2006年09月13日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(2日目)

2日目は、データベースを利用する -イエローページを作ってみよう-
ってことで、Railsでデータベースの使い方を学んだ。

以下の開発手順で行った。
  1. プロジェクトの作成
  2. データベースとユーザを作る(Rake)
  3. テーブルを作る(migration)
  4. アプリケーションを作る

プロジェクトの作成
プロジェクトを作成し、文字コードの設定をする。

データベースとユーザを作る(Rake)
  • データベース作成タスクの実装

  • lib/tasks/下にdb_setup.rakeというファイルを作成し、ビルドファイルを作成。
  • Rakeの実行
  • >rake [environment 変数名=値] タスク名


テーブルを作る(migration)
  • migrationの作成
  • >ruby script\generate migration ファイル名
  • テーブル作成プログラムの実装

  • db/migrate下に作成されたファイルをいじる。
  • database.ymlの設定

  • config/database.ymlをいじる。
  • migrationの実行
  • >rake migrate


アプリケーションを作る
  • scaffoldする
  • ruby script\generate scaffold モデル名 [コントローラ名]
    いろいろいじる
    scaffoldして作成された、コントローラ、モデル、ビューをいじる。
タグ:ruby Rails
posted by yu at 22:23 | Comment(0) | TrackBack(0) | Ruby

2006年09月12日

[Rails]かんたんRuby on RailsでWebアプリケーション開発(1日目)

1日目は、はじめてのRails -あいさつを返すアプリケーションを作ってみよう-

こんな感じの開発手順
  1. コントローラとビューの作成
  2. モデルの作成
  3. コントローラをいじる
  4. ビューをいじる
  5. 文字コードの設定
  6. Webブラウザでアクセス
  7. レイアウトとスタイルシートの作成
  8. ルートの設定


コントローラとビューの作成
ディレクトリを作ったプロジェクトに移して
> script\generate controller コントローラ名 アクション名 [アクション名...]


モデルの作成
app/models/下にファイルを作成する。


コントローラをいじる
コントローラの役割は
  • モデルを変更したり、モデルにデータを与えて処理させること
  • ビューへモデルを与えて出力データを作成させること

app/controllers/下にファイルが作成されている。やから、このへんのファイルをいじる。


ビューをいじる
ビューの役割は、モデルを出力形式に合わせること。HTMLとかXMLとか。
app/views/下にファイルが作成されている。ので、このへんのファイルをいじる。


文字コードの設定 ※絶対にやる!
UTF-8を使えるようにする。
config/environment.rbに以下を追記
$KCODE = 'u'
これでRubyが文字コードがUTF-8であると認識できるようになる。

次に、ブラウザがUTF-8だと認識できるようにするため、app/controllers/application.rbを変更。
before_filterに対して、
headers['Content-Type'] = "text/html; charset=utf-8"
と設定するメソッドを登録。


Webブラウザでアクセス
WEBrickを起動
ruby script\server


レイアウトとスタイルシートの作成
レイアウト用ファイルは、app/views/layouts下に作成。
スタイルシートの指定は、
<%= stylesheet_link_tag('スタイルシートの名前') %>

JavaScriptの指定は、
<%= javascript_include_tag('スクリプト名') %>

スタイルシートはpublic/stylesheets下に、JavaScriptはpublic/javascripts下に置く。


ルートの設定
config/routes.rbを変更する。


artonさん、コード解説とか書いててくれて、親切すぎ。わかりやすい!
これはいい本や。
タグ:ruby Rails
posted by yu at 22:01 | Comment(0) | TrackBack(0) | Ruby

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。