ホーム > RoR

RoRのアーカイブ

RoRでタグ機能を実装/Acts As Taggable On Steroids

RoRでタグ機能を実装するためのプラグイン「Acts As Taggable On Steroids」をインストールする。

インストール
まず、プラグインを実装したいRailsプロジェクトのrootディレクトリに移動してから、以下のコマンドでインストール。

$ ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids

新しいプラグインを入れたのでWEBrickを再起動。

マイグレーション
このpluginをインストールしたことで使用出来るようになったgenerateコマンドを使ってマイグレーションファイルの作成。

$ ruby script/generate acts_as_taggable_migration

データベースマイグレーション

$ rake db:migrate
== 4 ActsAsTaggableMigration: migrating =======================================
-- create_table(:tags)
   -> 0.0024s
-- create_table(:taggings)
   -> 0.0070s
-- add_index(:taggings, :tag_id)
   -> 0.0095s
-- add_index(:taggings, [:taggable_id, :taggable_type])
   -> 0.0081s
== 4 ActsAsTaggableMigration: migrated (0.0280s) ==============================

tags、taggingsの二つのテーブルが作成された。

念のためterminalでMySQLに繋いで確認してみる。

大丈夫。ちゃんと出来ている。

モデル等に追加するのはまたあとで。

Railsアプリでfeedの配信

  • 投稿者: admin
  • 11:57 AM
  • RoR

Atomフォーマットを追加
RailsにはAtomフィードの配信をサポートしてくれる機能がある。scaffoldを実行すると「respond_to」から始まるブロックが生成される。ここでマルチフォーマット対応を設定する。

マルチフォーマット機能は、同じアクションにアクセスした場合でもクライアントのリクエストに応じてHTMLやXML、JSON等、フォーマットを変えてレスポンスを返すことが出来る機能。

scaffoldでは、HTMLとXMLに対応した状態のものが生成される。

app/controller/entries_controller.rb を開いて「format.atom」を追加。
この場合はentriesという投稿記事一覧ページにこの機能を付けようとしている。

  def index
    @entries = Entry.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :x ml => @entries }
      format.atom # ここにatomを追加した
    end
  end

これだけだとリクエストに応える準備が出来ただけでユーザが見える形で出力できないので、出力用の(XMLを出力する)テンプレートファイルを作成する。

app/views/entries/index.atom.builder という名前で以下の内容。

atom_feed do |feed|
  feed.title("Blog Title") # サイトの名前
  feed.updated((@entries.first.created_at))

  for entry in@entries
    feed.entry(entry) do |item|
      item.title(entry.title) # 記事ごとのタイトル
      item.content(entry.content, :type => 'html')

      item.author do |author|
        author.name("showjin") # 投稿者名
      end
    end
  end
end

これで、localhost:3000/entries.atom にアクセスするとAtomフィードのXMLが表示されるようになった。

WindowsでのRoR開発環境のセットアップ

Instant Rails や RadRails は使わない。
Ruby1.8.6以降、Rails2.0以降。

Rubyの確認
コマンドプロンプトでバージョンの確認(1.8.6以降が必要)

ruby -v

なければインストーラをダウンロードしてパッケージごとインストール。
(コンポーネントは全て選択しておけばRailsをインストールするためのRubyGemsもインストールされる)

http://rubyinstaller.rubyforge.org/wiki/wiki.pl

(今回は、One-Click Installer-Windowsの「1.8.6-26 Final Release(23.72 MB)」をダウンロード)

Railsのインストール
コマンドプロンプトで以下を実行。(Rubyのインストールで一緒に入ったRubyGemsを使ってRails2.0.2をインストールする)

gem install rails -y -v 2.0.2

最新版をインストールしたい場合のコマンドは

gem install rails --include-dependencies

MySQLのインストール
RailsにはMySQLとSQLite3用の組み込みドライバが付属しているのでこのどちらかを使用する場合には面倒な追加作業はない、、らしい。(MySQL、SQLite3をインストールするだけでRailsと接続できる)

Rails2.0.2からはSQLite3がデフォルトのDBとなっているので、MySQLを利用する場合はプロジェクトを作成する際にそれを指定するオプションのコマンドが必要(rails -d mysql projectname)

Windowsの「Windows ZIP/Setup.EXE (x86) 5.1.24 82.2M」をダウンロード

http://dev.mysql.com/downloads/mysql/5.1.html

インストールする。インストールウィザードの最後の「Configure the MySQL Server now」のチェックはそのまま。(他もとくに何もせずnextですすんでいけばいい)んで、Finish。

続いてInstance Configrationのウィザードが出てくるのでNextで進む。

  1. Detailed ConfigurationをチェックでNext。
  2. Developer Machien(普通のパソコン)にインストールするをチェックでNext。
  3. Multifunctional DatabaseをチェックでNext。
  4. インストールする場所を聞いてくるので、とくになにもなければデフォルトのままでNext。
  5. MySQLを使用する規模を聞いてくる。今回は20人くらいを想定してDecision Support(DSS)/OLAPをチェックでNext。
  6. MySQLで使用するポート番号を聞いてくる。何もなければデフォルトの3306のままでNext。
  7. 使用言語を選択する画面。日本語でUTF8を使用したいのでManual Selected Default Character Set / Collationをチェックしてutf8を選択してNext。
  8. インストール時の名前変更が出来るけどそのままで。Install As Window ServiceとInclude Bin Directory in Windows PATH両方にチェックを入れてNext。
  9. rootのパスワード設定。ユーザがrootの場合、全ての権限がある。Railsの開発でもこのパスワードは必要。(ここではとりあえずhanage)また、他のクライアントからのデータベースアクセスを想定している場合、「Enable root access from remote machines」にチェックを入れておく。
  10. 最後の確認。Executeで完了。

Rails2.0におけるカラムの追加と削除

  • 投稿者: admin
  • 11:49 AM
  • RoR

新しくカラム(テーブルにおける項目、field)を追加する場合

script/generate migration を利用する。

imageという名前のカラムをentryという名前のモデルにstringとして追加する場合は以下のように実行する。

$ ruby script/generate migration add_image_to_entry image:string

※モデル名は単数なことに注意。

次に、migrateを実行すれば実際のテーブルに反映される。

$ rake db:migrate

削除の場合は「add」を「remove」に、「to_モデル名」を「from_モデル名」とすればいい。この場合もmigrateを忘れずに。
削除、試してみたけどだめだった。追加は問題ないのに。ほわい?

FileColumnプラグインのインストール

画像ファイルのアップロードが便利になるように「FileColumn」というプラグインをインストールする。合わせて、新しいカラムをテーブルに追加(削除)するやり方も一緒にメモ。

Railsで画像を扱うにあたっては前もってImageMagickとRMagickをインストールしておくこと。

続きを読む

RailsアプリにOpenIDによる認証を実装する

RailsアプリケーションにOpenIDによる認証システムを実装してみる
Ruby 1.8.7, Rails 2.0.2, Mac OSX Leopard
参考記事:OpenIDとRails:Authentication 2.0

続きを読む

gettextでRailsアプリを国際化(Mac OSX)

Mac OSX + Rails 2.1 + gettext 1.9.1 で日本語が表示出来るように(エラー画面とか)やってたけど、うまくいかず試行錯誤の数日間。結局Railsのversionが問題なんじゃないかってことで、これを2.0.2に落としてやり直すことに決めて再try。(この時点で、すでにwindows環境では検分済)

続きを読む

Rails2.0でgettext(windows)

Railsアプリケーションの国際化(日本語表示)
Mac OSX + Rails 2.1 に gettext 1.91 を使おうとしてたら駄目で「むーん」だったんだけど、windows + Rails2.0.2 でやってみたら出来た!やっぱりversionだったかぁ。自宅のMacもRailsのversion下げてやり直してみよう。

プロンプトを起ち上げて以下のコマンドでgettextをインストール
複数選択肢が表示される中で「gettext 1.91.0(ruby)」を選択した

gem install gettext

config/environment.rbの末尾(endの後に)に次の一行を追加

require 'gettext/rails'

app/controller/application.rb内にある
helper :all # include all helpers, all the timeの後に
init_gettext “任意の文字列”
を追加

class ApplicationController < ActionController::Base
  helper :all # include all helpers, all the time
  init_gettext "任意の文字列"

partial/共通部分のパーシャル化

複数の箇所で使い回せるものをpartial化
(パーシャル用テンプレートファイルに切り出す)

使い回す部分を_filename.html.erb
(以下、この場合はentryとする)

_entry.html.erb
(view/entries/に保存)

これを読み込みたい部分で、そのファイル(同様にveiw/entries/内の.html.erbファイル)に以下のように記述。

< %= render :partial => @entry %>

このpartial部分を幾度も繰り返すようなら

< %= render :partial => @entries %>

※@entryと@entriesの違いはなんとなくの推測なので、まだはっきりとは分からない。
※render :partialの指定で、@がつくときとつかないときがある。その違いは?

Railsアプリを国際化対応させる

Ruby-GetText-Packageをインストール
(エラー画面等のテキストが日本語で表示されるように)

しかし、失敗。(単純にrails2.1に対応してないとか? gettext1.91はrails2.0.xに対応ってあるし)

続きを読む

ホーム > RoR

検索
フィード

ページの上部に戻る