Category Archives: Ruby

[Ruby]Shift_JIS環境でUTF-8にURLエンコード

AmazonのWebサービスを利用する際、検索文字列を
UTF-8にURLエンコードしなくてはならない。

Rubyには、CGIというクラス(ライブラリ)が付属してあった。

CGI.escape("エンコードしたい文字列")

はい、出来ました・・・と思ったが、あれ?文字コード指定は?

やはり・・・。Windows環境で実行したので、
Shift_JISでURLエンコードされていた。

環境に依存するのか?
CGIクラスのリファレンスを調べてみたが、
引数に文字コードを指定するメソッドが存在しない。

多少悩み、試しに文字列を一度UTF-8に変換し、
再度、escapeしてみた。

ビンゴ!
以下のソースがサンプルです。

CGI.escape("エンコードしたい文字列".toutf8)

RailsによるアジャイルWebアプリケーション開発


RailsによるアジャイルWebアプリケーション開発

日本初となったRuby on Rails参考書発売。
それと同時にAmazonで購入しちゃいました。

この本の良い点は、「管理体制」から教えてくれるという面。
データベースを
・開発用
・テスト用
・本番用

と分けて管理を行なう方法や設計の進め方などを解説してくれている。

Ruby on Railsをどう扱うかを中心にRuby on Railsを解説してるって感じかな?

なので、欠点としては、Ruby on Railsの基本メソッドの解説があまり載っていないため、
「ここで、読んでるメソッドって何?」みたいなことが少々ある。

Ruby on Rails用の逆引きポケットリファレンスでも発売してくれれば、
それも購入して、最高な開発環境が整うんだけど。

それでも、この本は、「Ruby on Railsの参考書」というくくりではなく、
プログラム開発する上での知識として1冊あってもおかしくないほど
充実している本だと思う。

すばらしい!37signals

37signals Jason Fried氏の公演 「より少ないシンプルな機能で競争する」
http://www.goodpic.com/mt/archives2/2005/09/37signals_jason.html

これは、すばらしい!

ウェブアプリケーションの真髄を語っていて、すごくためになる。
なんといっても、最近の時代とニーズを理解した上での定義!

・ユーザーインターフェースから作成
・操作は出来るだけシンプルにする
・ブログで話題になる機能をチョロっとつける

上記に書いた3項目は、めちゃくちゃ共感できる!

そして、今まで推奨されていたドキュメントや設計書などの重要さを
真っ向から否定し、ユーザーへのサービスを最優先事項としている。

全てを完璧にこなせば、成功は見えそうだw

[Ruby on Rails]再度基礎(コントローラー)

自分が出来る!と思い込みすぎて、混乱してきたw
やはり初心に戻って、再度勉強だ!

ApplicationController
Ruby on Railsのコントロール部分であり、JavaでいうServlet部分である。

(例)
ruby script/generate controller sample_ctrl
この場合は、controllers/sample_ctrl_controller.rbが作成される。

index.htmlを作成したい場合は、indexメソッドを作成する。

class SampleCtrlController < ApplicationController

  def index
    # render_textは、表示を行なう
    render_text(“これは、サンプルプログラムです。”)
  end

end

これで、「http://localhost:3000/sample_ctrl/」へ接続すると、

「これは、サンプルプログラムです。」が画面に表示される。
同様にメソッドを作成すると、メソッド名がパスとなる。

素晴らしい点は、一つ。
「設定ファイルがいらない」
メソッドを追加すれば、勝手にそれがURLのパスとなる。これは楽勝だねえ。

[Ruby on Rails]再度基礎(ビュー)

コントローラーが設定できたら、次はテンプレートrhtmlファイルの作成だ。

今回は、コントロールクラスに「list」というメソッドを追加したと仮定して、解説する。
その他に、モデルの作成やデータベースの設定なども出来ていると仮定して解説する。
※分からない方は、こちらで勉強!

では、コントロールクラスのサンプルプログラムから。

1.以下のコマンドを打つ
ruby script/generate controller sample_ctrl

2.controllers/sample_ctrl_controller.rbを編集
以下のメソッドを追加する。

def list
  # データベースから全てのデータを取得してくる
  # その後、samplesという変数に代入する。
  @samples = SampleCtrl.find_all
end

※このfind_allは、モデル標準のメソッドでDBからデータを全て取得してくるようだ
※SampleCtrlというモデルは、すでにmodelコマンド実行で作成していることが前提

では、views/sample_ctrl/list.rhtmlを新規作成しましょう。

<% @samples.each do |sample| %>
  <%= sample.title %><br>
<% end %>

これで準備完了。
「http://localhost:3000/sample_ctrl/list」へ接続してください。
データベース(sample_ctrlテーブル)にデータが格納されている場合は、
きっと表示されているはずです。

[Ruby on Rails]コントロールやビューの編集

Ruby on Railsを触りだして数日間。
やっとスタート地点に立てたw

Ruby on Railsフレームワークは、超簡単にWebアプリが作成できるが、
そこからどうしたらよいか、とても困る。
そこで少しずつ出力しながら作成していこうと思う。

では最初に、テンプレートとなるフォーム画面から作成してみた。
あらかじめデータベースに「table_name」というテーブルを作成していることが前提だ。
あと、「table_name」のテーブル内に「link」というカラム名が存在することも前提だ。

views/table_name/parse.rhtml

<%= start_form_tag :action => ‘html_parser’ %>
    <%= text_field ‘table_name’, ‘link’ %>
    <%= submit_tag “パースする” %>
<%= end_form_tag %>

<%= link_to ‘一覧へ戻る’, :action => ‘list’ %>

表示のイメージは、ただテキストフィールドが1行あって、サブミットボタンが一つあるのみ。

次にコントロールする側のメソッド追加を行なうわけだ。
まず、どういうページ移行をするか解説する。
1.「http://localhost:3000/table_name/parse」というURLに接続すると、フォーム画面へ移行する。
2.フォームに文字列を入力し、「http://localhost:3000/table_name/html_parser」に値を送る。
3.html_parserメソッド内で受け取った値を表示する。
まぁ、テストを行なうだけで、特に処理を行なうというわけではない。

これを元にまず「parse」メソッドから作成する。

controllers/table_name_controller.rb

# ただ初期化して、フォーム画面へ移行するだけ。
    def parse
      @table_name = TableName.new
    end

    def html_parser
# parse.rhtmlからパラメータ「table_name」を受け取り、@table_nameに代入
        @table_name = TableName.new(params[:table_name])
        if @table_name != nil
            print @table_name.link
        else
            print “table_name is nil”
        end
        redirect_to :action => ‘parse’
    end

どうでしょう?
なお、「@table_name」や「TableName」などの変数やクラスは、Rails作成時に自動作成されたものです。

簡単なのは、やはり設定ファイルが少ないこと。Javaだとweb.xmlだのstruts-config.xmlだの、
いろいろと設定しなくてはならないが、Railsだとコントロールのメソッド名が勝手に
URLのパスとして設定される。
それから、モデルをデータベースからマッピングしているのか、
特にセッターゲッターなどの記述無しでも勝手に格納してくれる。

こいつに慣れたら、やばいなw

[Ruby on Rails]カスタマイズしたい人用コマンド

ヽ( ・∀・)ノきゅまきゅまー:優しいRailsの育て方
http://wota.jp/ac/?date=20050718

すばらしい!
私が直面していたRailsの問題を一気に解消してくれている。

その問題とは、

WEBアプリできましたぁ!・・・で?その次はどうやって編集するの?

です。

先日書いた記事でWEBアプリを作成すると、ほとんどの処理をフレームワーク側で処理を行なってくれる。便利なのだが、作成後は、どうやってカスタマイズするのか全く理解不能だった。

しかし、冒頭で紹介したサイトでは、それを全て解決してくれている。
手順は、database.yml編集までは一緒。

その後、以前まではモデル・コントロール作成コマンドを打っていたが、
それを以下のコマンドを実行する。

$ ruby script/generate scaffold モデル名 コントロール名

コマンド実行後、app以下を見ると、ファイルが出力されている!
これでカスタマイズの第一歩までこれたぁ

[Ruby on Rails]再度、アプリ作成手順の解説

Ruby on Railsをさわりだして、3日目。
まだまだ理解できていないようだ。

再度アプリ作成手順を解説する。

1.データベース作成
Ruby on Railsでデータベースを使用する際には、注意点があるようだ。
よく分からないが、テーブル名を複数形の名前にしなくてはいけない?ようだ。

モデル部分を「item」とする場合は、テーブル名を「items」としなくてはいけない。
例えば「ranking」というテーブルを作成すると、WEBrickのページを開くと、
エラーが発生する。
エラーには、「select count(*) from rankings」というログが・・・。
というわけで、テーブル名を複数形にしなくてはならない。

それから、カラムにidを追加しなくてはならない
こればかりは、Ruby on Railsの仕様だから仕方ない。

2.アプリケーションの雛形を作成
コマンドプロンプトを開き、以下のコマンドを実行。
$ rails app_name
コマンドを打つと、アプリケーションの雛形が作成される。
(app_nameは、自分で名付けたいアプリ名)

3.script/database.ymlの修正
どのデータベースを使用するか、ユーザー名は何か、などを修正する。
development:
adapter: mysql
database: app_name
username: root
password:

PostgreSQLでも接続が出来るようだが、試してみてはいるものの未だに接続できない。ひとまずMySQLで試す。

4.モデルとコントロールを作成
以下のコマンド実行。
$ ruby script/generate model テーブル名の単数形
$ ruby script/generate controller テーブル名の単数形

先ほど、データベースに作成したテーブル名は、複数形だった。
今回は、その単数形を入力する
例えば、テーブル名「rankings」だったら、「ranking」と入力する。

5.WEBrickサーバの起動
準備完了なので、サーバ起動しましょw
$ ruby script/server

6.ブラウザを立ち上げてアプリを見る
では、ブラウザを開いて、以下のURLに接続します。

http://localhost:3000/テーブル名の単数形
「テーブル名の単数形」とは、先ほどモデルとコントロールを作成した時の
名前を入力する。

一応、これで出来上がりw

[Ruby on Rails]ディレクトリ解説?

Ruby on Railsのディレクトリ解説をしたいのだが、
解説しているサイトが、ネット上にほとんど存在しないので、
独学となる。

では。

・app
多分このディレクトリがプログラム作成するディレクトリなのだろう。

・doc
Javaと同じでドキュメントを配置するディレクトリだろう。

・lib
Javaと同じでモジュールやライブラリを配置するディレクトリだろう。

・log
WEBrickのエラーログが出力されていたので、
アプリケーションの総合的ログ配置ディレクトリだろう。

・public
cgiファイルやhtmlファイルが存在することから、ビューの配置ディレクトリだろう。

・script
サーバ起動時やモデル作成時などに使用する実行ファイルが配置してある。
何かを実行する時に使用するディレクトリだろう。

・test
ディレクトリ名そのままで、テストを行なうファイルを配置するディレクトリだろう。

・vendor
和訳してみると「業者」だった。その中には、「plugins」というディレクトリがある。何に使用するんだ?いまだ分からず。

一通り、予想を記述してみたが、多分「app」ディレクトリが作業用のディレクトリ
のような気がする。

情報を整理できたし、また調べるか・・・。

[Ruby on Rails]RubyがEclipseになった!

Eclipseには、プラグイン機能というものがあり、
Eclipseを拡張することが出来る。

気合を入れれば、EclipseでEclipseを作ることが出来るわけだ。
今日、本屋に行ってRuby on Railsの本を見ていたんだが、

なんとプラグインでRuby on Rails用に改造したEclipseを配布しているではないか!

RadRails
http://www.radrails.org/

早速使ってみた。
おぉ!なかなか面白い!

しかし、まだRails自体の使い方を理解していないので、
ちょっと分かりにくい・・・。

Eclipse用 Ruby IDEも入ってるので、Ruby開発は今度からこれだな!