ホーム ブログ ページ 67

[Rails 2.0]起動時のファイルの読み込みの順番がわかった!

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

 こんにちは。

 KBMJでRuby on Rails を使ったweb開発に携わっているyoppiといいます。

 今回は、Rails 2.0のプロセス起動時に読み込まれるファイルの順序について調べてみました。

 まず、気になったのはRiding Rails: Rails 2.0: Preview Releaseにある。config/initializers配下のファイルの読み込みがどの段階なのかということです。

 Rails::Initializerのソースを見てみると、proccessの一番最後で行われていたので、プロセス起動時の最後の段階で読み込まれるようです。(ちなみに複数ある場合は、ファイル名順)

 config/environment.rbで初期化した変数とか使えるのかな~というのが一番の懸念点でしたが、大丈夫なようです。

 この調査で、わかったのですが、プロセス起動時前の処理とかも別ファイルで指定できるようになっているみたいです。

 config/preinitializer.rbを用意すると、プロセス起動時の一番最初にこれが読み込まれます。あんまり使うことはなさそうですが、頭の片隅に入れておくと今後役に立つかもしれません。

 config/initializers配下については使っていきたいと思っていたので、読み込まれる段階がわかってよかったです。config/preinitializer.rbについても必要になったら使っていきたいと思います。

【まとめ】起動時のファイルの読み込みの順番

config/preinitializer.rb

config/environment.rb

config/initializers配下のファイル

Ruby on Railsでacts_as_paranoidを使い倒す

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

KBMJのプログラマのx5rです。

今日はRuby on Railsプラグインのacts_as_paranoidについて説明します。
これはDBのモデルデータを削除をする時に物理削除ではなく、論理削除をするためのプラグインです。

Railsの2.0系がリリースされましたが、まだ1.2系で開発することも多いと思います。
しかし、このacts_as_paranoidプラグイン、使い方は簡単ですが、Railsの1.2.5で利用する時に一部の機能でエラーが発生して使用できなかったり、また、私の希望する機能がありませんでしたので、このacts_as_paranoidプラグインを一部改良しました。

そこで、私が行ったエラーの対処法と拡張を説明したいと思います。
なお、以下#{RAILS_ROOT}で全て作業しているものとします。

CRUDアプリの作成

前回のAmazonAPIの使い方を説明した時は、Railsのバージョンは2.0系でしたが、今回はRails1.8.5を利用します。

まず、CRUD処理が必要なので、scaffoldを利用して作成します。
以下、単純なので簡単に流れだけ書いておきます。

 $ script/generate model Book #Bookモデルの作成
 $ less db/migrate/001_create_books.rb #Bookモデルのマイグレーションを編集
 class CreateBooks < ActiveRecord::Migration
   def self.up
     create_table :books do |t|
       t.column :title,        :string
       t.column :author,       :string
       t.column :date,         :date
       t.column :created_at,   :datetime
       t.column :updated_at,   :datetime
     end
   end
    def self.down
     drop_table :books
   end
 end
 $ rake db:migrate #マイグレート
 $ script/generate scaffold Book Book #scaffoldを作成
 $ script/server #サーバ起動 

では、http://localhost:3000/bookにアクセスします。
実際にデータを追加して削除すると、レコードが削除、つまり物理削除されていることがわかります。

acts_as_paranoidの導入

acts_as_paranoidのインストール

acts_as_paranoidプラグインをインストールします。

 $ ruby script/plugin source http://techno-weenie.net/svn/projects/plugins
 $ ruby script/plugin install acts_as_paranoid 

 deleted_atカラムを追加

acts_as_paranoidプラグインではdeleted_atカラムを論理削除のためのフラグとして機能しますので、deleted_atカラムを追加します。

 $ script/generate migration AddBooksDeletedAt #マイグレーションファイルの作成
 $ less db/migrate/002_add_books_deleted_at.rb #マイグレーションファイルの編集
 class AddBooksDeletedAt < ActiveRecord::Migration
   def self.up
     add_column :book, :deleted_at,   :datetime,  :comment => "削除日時"
   end
    def self.down
     remove_column :book, :deleted_at
   end
 end
 $ rake db:migrate #マイグレーション 

acts_at_paranoidの設定

Bookモデルにacts_as_paranoidクラスメソッドを追加します。

 $ less app/models/book.rb
 class Book < ActiveRecord::Base
   acts_as_paranoid
 end 

動作確認

実際に削除してみると、

 undefined method `construct_count_options_from_args' for Book:Class 

というエラーが表示されます。

これは最新のacts_as_paranoidプラグインがRails2.0に向けた対応をしたことによる影響らしいです。

そこで
RAILS_ROOT/vendor/plugins/acts_as_paranoid/lib/caboose/acts/paranoid.rb
の約90行目あたりの

 calculate_with_deleted(:count, *construct_count_options_from_args(*args)) 

 calculate_with_deleted(:count, *construct_count_options_from_legacy_args(*args)) 

に変更します。

これで削除をしてみるとうまく動作することが確認できます。

論理削除されたものも取得する

さて、場合によっては論理削除されたデータも含めた形で表示したいということもあるかと思います。
そして、acts_as_pluginは削除フラグのたっているものも含めて取得するためのメソッドも用意しています。

それが以下の2つの方法です。

  • :with_deletedオプションを指定
  • find_with_deletedメソッドを利用

はじめにBookControllerに次のようなアクションを追加し、簡単なテンプレートも作成して試してみます。

BookControllerにlist_with_deletedアクションを追加

$ less app/controllers/book_controller.rb
 class BookController < ApplicationController
    # --- 省略 ---
   def list_with_deleted
     #データ取得処理を記述する
   end
  end 

テンプレートを作成

 $ less app/views/book/list_with_deleted.rhtml
 <%- @books.each do |book| -%>
 
   <%= book.title %> - <%= book.author %> - <%= book.date %>
 <%- end -%> 

 :with_deletedオプションを指定

list_with_deletedアクションにデータ取得処理を記述します。

 $ less app/controllers/book_controller.rb
  class BookController < ApplicationController
    # --- 省略 ---
   def list_with_deleted
     @books = Book.find(:all, :with_deleted => true)
   end
 end 

http://localhost:3000/book/list_with_deletedにアクセスしてみます。すると

 Unknown key(s): with_deleted 

と表示されてしまいます。

そこで[#8896] find(:all, :with_deleted => true) broken (at least in version 0.3.1/July-2006)を参考にRAILS_ROOT/vendor/plugins/acts_as_paranoid/lib/caboose/acts/paranoid.rbの約58行目あたりの

 class << self
   alias_method :find_every_with_deleted,    :find_every
   alias_method :calculate_with_deleted,     :calculate
   alias_method :delete_all!,                :delete_all
 end 

に1行追加して

 class << self
   VALID_FIND_OPTIONS << :with_deleted unless VALID_FIND_OPTIONS.include?(:with_deleted)
   alias_method :find_every_with_deleted,    :find_every
   alias_method :calculate_with_deleted,     :calculate
   alias_method :delete_all!,                :delete_all
 end 

のようにします。
これで論理削除されたものも含まれて表示されます。

find_with_deletedメソッドを利用

find_with_deletedメソッドで論理削除されたものも取得する方法があります。

以下で説明するページネートで利用するためにこちらも確認してみます。
list_with_deletedアクションにデータ取得処理を記述します。

$ less app/controllers/book_controller.rb
 class BookController < ApplicationController
    # --- 省略 ---
   def list_with_deleted
     @books = Book.find_with_deleted(:all)
   end
 end 

http://localhost:3000/book/list_with_deletedにアクセスしてみます。すると

undefined method `extract_options!' for [:all]:Array 

というエラーが表示されます。
これもRails2.0に向けた対応によるものです。

そこで論理削除プラグイン(バグ修正) – Rails開発日記のサイトを参考に対応します。
上記のサイトではActiveSupportに直接変更を加える方法が説明されていますが、それはあまりやりたくないので、RubyおよびRailsの特性を生かして、クラス(モジュール)を拡張して対応してみます。
上記サイトのリンク先

のソースを今回のRailsアプリに反映させます。


RAILS_ROOT/libにactive_support_extend.rbというファイルを作成して以下のように記述します。

 $ less lib/active_support_extend.rb
  module ActiveSupport #:nodoc:
   module CoreExtensions #:nodoc:
     module Array #:nodoc:
       module ExtractOptions
         # Extract options from a set of arguments. Removes and returns the last element in the array if it's a hash, otherwise returns a blank hash.
         #
         #   def options(*args)
         #     args.extract_options!
         #   end
         #
         #   options(1, 2)           # => {}
         #   options(1, 2, :a => :b) # => {:a=>:b}
         def extract_options!
           last.is_a?(::Hash) ? pop : {}
         end
       end
     end
   end
 end
  class Array
   include ActiveSupport::CoreExtensions::Array::ExtractOptions
 end 

そしてRAILS_ROOT/config/environment.rbに

 $ less config/environment.rb # 一番下に記述
 require "active_support_extend" 

を記述してWebrickを再起動します。
そして、再度http://localhost:3000/book/list_with_deletedにアクセスしてみます。
これで論理削除されたレコードも表示されているのがわかります。

ページネートでfind_with_deletedを利用する

 ActionController::Paginationを拡張

上記で、論理削除されたデータの取得ができるようになりましたが、一覧画面でページネートを利用した際にも論理削除されたデータを取得したいことがあります。

そこでActionCcontrollerのpagination.rbを参考にページネートを拡張してみます。


RAILS_ROOT/vendor/plugins/acts_as_paranoid/lib/の下にpagination_extend.rbというファイルを作成し、以下のように記述します。

$ less vendor/plugins/acts_as_paranoid/lib/pagination_extend.rb
 module ActionController
   module Pagination
     def paginate_with_deleted(collection_id, options={})
       Pagination.validate_options!(collection_id, options, true)
       paginator_and_collection_for_with_deleted(collection_id, options)
     end
     module ClassMethods
       def paginate_with_deleted(collection_id, options={})
         Pagination.validate_options!(collection_id, options, false)
         module_eval do
           before_filter :create_paginators_and_retrieve_collections_with_deleted
           OPTIONS[self] ||= Hash.new
           OPTIONS[self][collection_id] = options
         end
       end
     end
     protected
     def create_paginators_and_retrieve_collections_with_deleted #:nodoc:
       Pagination::OPTIONS[self.class].each do |collection_id, options|
         next unless options[:actions].include? action_name if
           options[:actions]
          paginator, collection =
           paginator_and_collection_for_with_deleted(collection_id, options)
          paginator_name = "@#{options[:singular_name]}_pages"
         self.instance_variable_set(paginator_name, paginator)
          collection_name = "@#{collection_id.to_s}"
         self.instance_variable_set(collection_name, collection)
       end
     end
     def find_collection_for_pagination_with_deleted(model, options, paginator)
       model.find_with_deleted(:all, :conditions => options[:conditions],
                  :order => options[:order_by] || options[:order],
                  :joins => options[:join] || options[:joins], :include => options[:include],
                  :select => options[:select], :limit => options[:per_page],
                  :offset => paginator.current.offset)
     end
     def count_collection_for_pagination_with_deleted(model, options)
       model.count_with_deleted(:conditions => options[:conditions],
                   :joins => options[:join] || options[:joins],
                   :include => options[:include],
                   :select => options[:count])
     end
     def paginator_and_collection_for_with_deleted(collection_id, options) #:nodoc:
       klass = options[:class_name].constantize
       page  = params[options[:parameter]]
       count = count_collection_for_pagination_with_deleted(klass, options)
       paginator = Paginator.new(self, count, options[:per_page], page)
       collection = find_collection_for_pagination_with_deleted(klass, options, paginator)
        return paginator, collection
     end
   end
 end 

やっていることは最終的にfind_with_deletedメソッドを実行するために、そこまでのルートで呼ばれるメソッド名に「_with_deleted」を付けているだけです。
DRYではないですが、まあよしとします。

そして、RAILS_ROOT/vendor/plugins/acts_as_paranoid/init.rbでロードします。

$ less vendor/plugins/acts_as_paranoid/init.rb
 # 先頭に追加
 require 'pagination_extend'
 # 以下省略 

BookControllerのlistアクションを修正

 $ less app/controllers/book_controller.rb
 class BookController < ApplicationController
   # --- 省略 ---
   def list
     @book_pages, @books = paginate_with_deleted :books, :per_page => 10
   end
   # --- 省略 ---
 end 

動作確認

http://localhost:3000/book/listにアクセスすると、論理削除されたデータも含めたページネートが実現されています。

参考サイト

fastladderをrailroadで図を作ってみる。

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

たっちな人がfastladderを試していたので対抗して 

railroadでモデルとコントローラの図を作ってみた。

コマンド 

railroad -C | dot -Tjpg > controller.jpg

railroad -M | dot -Tjpg > model.jpg

http://cl.pocari.org/2008-02-10-1.html

あと、こちらではもっときれいにER図つくってあるので

開発する際の参照はこちらの方がいいかと。

ちなみにrailroadはgem install railroadで入ります。 

ヘルパーメソッド

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。エンジニアのmimiです。

難しい話は、他の方にまかせて、私は初級者・初心者にやさしい内容を書いていきたいと思います。

今回のテーマは、「ヘルパーメソッド」

ヘルパーメソッドとは、 

リンクを貼る(a href) など、HTMLのタグを作成するためのメソッドです。

 たとえば

<%= link to "削除",  :action => 'destroy'  %>

  これは↓

<a href="/destroy">削除</a>

 というHTMLを吐き出します。

 これに、アラートを出したいときには、

<%= link to "削除",  { :action => 'destroy' }, :confirm => "削除しても本当に後悔しない?" %>

 ↓

<a href="/destroy"  onclick="return confirm('削除しても本当に後悔しない?');">削除</a>

  となり、ポップアップで「OK」か「キャンセル」のボタンが表示されます。

 URLを作成するものとしては、

<%= url_for  :controller => 'list',  :action => 'destroy'  %>

 これは、”/list/destroy”となります。:controllerを省略した場合は、現在の位置と同じになります。   

Ruby on Railsでは、直接HTMLタグを書かずに、

 ヘルパメソッドを利用するのがルールです。

ディレクトリが変更になったときにでも、対応がしやすいこともありますし、

何より終了のタグを忘れる危険性もないので、楽ですね。

他にもメソッドはたくさんありますが、今回はここまでとします。

読んでくださってありがとうございます。

Ruby標準csv遅い

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、ワイYです。
今回は、Rubyの標準CSVはどの程度遅いのか、FasterCSVというRubyプラグインを用いて検証してみました。

検証前の準備・RubyプラグインFasterCSVをgemを用いてインストールする。gem install fastercsv・検査データとして郵便局のHPから郵便番号CSVを取得する。

検証方法Ruby標準のbenchmarkモジュールを使って、Ruby標準CSVとRubyプラグインFasterCSVにそれぞれ郵便番号CSVを読み取らせて比較する。

検証環境

OS: Windows XP

CPU: Core 2 Duo 2.4GHz

MEMORY: 3GB

Ruby v1.8.6

fastercsv v1.2.3

プラグインFasterCSVの使い方require ‘rubygems’
require ‘fastercsv’
#CSVファイルを読み込み一行ずつ処理をする
FasterCSV.foreach(“csvファイルパス指定”){ |csv|
p row #=>配列
}


検証に用いたコード検証には、ハッシュのキーを郵便番号、値を住所を挿入するようなプログラムにしました。require ‘rubygems’
require ‘benchmark’
require ‘csv’
require ‘fastercsv’
$KCODE=’sjis’

Benchmark.bm(15) do |x|
 #FasterCSV
 x.report(” FasterCSV”) do
   hash = {}
   FasterCSV.foreach(“KEN_ALL.CSV”){ |row|
     hash[ row[2] ] = row[6] + row[7] + row[8]
   }
 end

 #ruby標準CSV
  x.report(“CSV”) do
    hash = {}
    CSV.foreach(“KEN_ALL.CSV”){ |row|
      hash[ row[2] ] = row[6] + row[7] + row[8]
    }
  end
end

結果3回実験してみたが、RubyプラグインFasterCSVの方が5倍ほど早い事がわかった。詳細は、下図を参照してください。

まとめRubyでCSV関連を扱うときはプラグインのFasterCSVを使うようにしよう。

railsで開発したダイエットサイトとそのソースコード

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

体重が0.1トンでは済まなくなってきた高瀬です。

3連休の内、土日を使ってKBMJ社内で開発合宿を行いました。

その参加者の一人が最近ツイッターに体重のメールを送ってははてなグラフに読み込ませて、

ダイエット記録を出してると聞いたので、ダイエット記録を登録するサイト作ってみた。

だいえとというサイトです。

具体的には…… 

記録を登録するとぺたっと張ってるグラフの内容が簡単に更新されます。

ただそれだけですが、一応携帯からも記録を登録出来る様に作りました。

http://daieto.dip.jp/diets/show/zenpou


こんな感じのグラフです。

そしてダイエットサイトのソースコードはこちら 。

fastladderを試してみました ~rails2.0~

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、tacchiです。

fastladderがオープンソース

になったという記事を見て、ラボの時間を利用して、入れてみました。

検証環境

CentOS 5
Rails: 2.0.2

インストール手順

svn checkout http://fastladder.googlecode.com/svn/trunk/ fastladder-read-only

fastladder-read-onlyというディレクトリが作成されて、なかみてみるとrailsプロジェクトと
batファイルなどが入ってます。

batファイル中見ましたが、mongrel動かしたり、serviceに登録したりをシェル化しているだけです。なので、今回は特に使わず、自分で設定しました。

では、さっそくfastladerを動かすための設定をしたいと思います。

まず、DB関連。
■fastladder/config/以下にdatabase.ymlとかdatabase.yml.mysqlとかあるので環境に合わせて切り替える。自分はMySQLが元々環境に入っているので、MySQLを利用します。$ mv database.yml database.yml.base
$ mv database.yml.mysql database.yml


■DB作成します。
mysqlにログインして、DB作成します。mysql > create database fastladder_production;
Query OK, 1 row affected (0.00 sec)


■ユーザ作成mysql > grant select,insert,delete,update,create,drop,file,alter,index on *.* to fastladder@localhost identified by ‘12345’;
mysql > flush privileges;


■これだけyumでインストールできないので以下のコマンドでインストールwget http://downloads.sourceforge.net/freeimage/FreeImage3100.zip
unzip FreeImage3100.zip
cd FreeImage
make
make install


■gemで以下インストール$ gem install rfeedfinder
$ gem install feed-normalizer
$ gem install opml
$ gem install mongrel


■テーブル作成します。
fastladderディレクトリに移動して以下を実行rake db:migrate

■実行
fastladderディレクトリに移動して以下を実行script/server -d -e production
RAILS_ENV=production script/crawler > /dev/null &

まとめ

簡単にインストールできました。自分は、mongrel_clusterなどを使って起動とかさせてますが、上記で動きます。あと、INSTALL.txtとか丁寧に書いてくれてるので、参考になりました。

Railsの手動インストール

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。 kimiです。

今回は、Railsを手動でインストールしたケースをご紹介します。

実は、この方法をとった背景には、当サイト「DoRuby!」のローカル環境を構築する時に

RubyGemsによる自動のリモートインストールが失敗したことがきっかけです。

※Windowsでローカル環境構築をおこないます。

前回はgemコマンドについて紹介しており、その際にはRuby(1.8.5) をインストール済みです。確認もしてみましょう!

◆rubyのバージョンを確認するコマンド 

C:/>ruby -v

ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]

railsインストールの失敗談 

さて、それではgem コマンドを使って、rails の環境を構築・・・と思いきや、

C:/ruby>gem install rails

Bulk updating Gem source index for: http://gems.rubyforge.org

Install required dependency rake? [Yn]

Install required dependency activesupport? [Yn]

Install required dependency activerecord? [Yn]

ERROR: While executing gem … (Zlib::BufError)

   buffer error

なんじゃこりゃーと思いつつ、Rails に必要な gem をダウンロードしてきて

インストールすることで解決しました。

さてさて、ここからが手動のダウンロードおよびインストールになります。

あっ、ちなみに他にも解決方法はあるのですが、今回は手動をでの方法を選んでみました。 

Rails の依存ファイル群をダウンロード 

まずは、Rails の依存ファイル群をダウンロードします。今回はC:/ruby>配下に保存。

Rails 以外は rails が必要としている gem なので rails は一番最後にインストールしてください。

     ■activesupport-1.4.2.gem

     ■activerecord-1.15.3.gem

     ■actionpack-1.13.3.gem

     ■actionmailer-1.3.3.gem

     ■actionwebservice-1.2.3.gem

     ■rails-1.2.3.gem

Railsをインストール

◆RubyGemsのlocalオプションを使うことでRailsをインストールすることができる。

 下記の順にインストール。

C:/ruby>gem install activesupport --local
Successfully installed activesupport, version 1.4.2
Installing ri documentation for activesupport-1.4.2...
Installing RDoc documentation for activesupport-1.4.2...


C:/ruby>gem install actionpack --local
Successfully installed actionpack, version 1.13.3
Installing ri documentation for actionpack-1.13.3...
Installing RDoc documentation for actionpack-1.13.3...


C:/ruby>gem install activerecord --local
Successfully installed activerecord, version 1.15.3
Installing ri documentation for activerecord-1.15.3...
Installing RDoc documentation for activerecord-1.15.3...


C:/ruby>gem install actionwebservice --local
Successfully installed actionwebservice, version 1.2.3
Installing ri documentation for actionwebservice-1.2.3...
Installing RDoc documentation for actionwebservice-1.2.3...


C:/ruby>gem install actionmailer --local
Successfully installed actionmailer, version 1.3.3
Installing ri documentation for actionmailer-1.3.3...
Installing RDoc documentation for actionmailer-1.3.3...


C:/ruby>gem install rails --local
Successfully installed rails, version 1.2.3  

これでインストールが完了です。

インストールできたか確認したい場合は、C:/ruby/lib/ruby/gems/1.8/gems配下をご確認ください。 

◆※複数のVersionがインストールされている場合などは、不要なVersionを指定して

 アンインストールも可能です。

gem list                # インストールされているパッケージを確認

gem uninstall <パッケージ名>  # アンインストールコマンド

 このような流れでローカル環境構築をおこなってみましたが、まだまだ簡単に構築できる

手段は多く存在しますので、いろいろと試してみるといいでしょうね。

では、サッカー日本代表の3次予選(vsタイ戦)がそろそろ終わるので、ここらで失礼します。

(-_-)ゞ

RadiantCMSのインストール(2)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

お久しぶりです。花吹雪です。


インストール中に中断するなよ!という声が聞こえてきそうですが、
私が戻ってきたからにはもう大丈夫。
我慢できずに自分で調べてインストールしてしまった方。ご苦労様でした。
一方、我慢して今回の書き込みを待ちわびていた方。どうもありがとう!
では早速、続きを書くとしましょうか。

日本語化の設定

確かデータベースの設定まで終わったんでしたよね。
あとはデータベースの初期化をすれば終わりなんだけど、
その前に、ここで日本語化の設定をしてみたいと思います。
「ワタシ日本語キライ」という方はこの章は飛ばしてください。


あらかじめ言っておきますが、全てが日本語になるわけではありません。
Radiantの管理画面と、編集で使用するタグのヘルプが日本語化されます。


まず、Ruby-GetText-Packageというパッケージ(バージョン1.9.0以上)
を利用するので、これをgemを使ってインストールします。インストールしたら
一応バージョンを確認してください。$ gem install gettext
$ gem list gettext (バージョンの確認)

次にRubyForgeから以下のアーカイブをダウンロードし、 Radiantのvender/extensions以下に展開します。$ cd /home/radiant_project/vendor/extensions
$ wget http://rubyforge.org/frs/download.php/23244/radiant_gettext_0.6.2.tar.gz
$ tar xvzf radiant_gettext_0.6.2.tar.gz

最後にRadiantのルートディレクトリでRakeタスクを実行します。$ cd /home/radiant_project/
$ rake radiant:extensions:gettext:setup

でですね、アーカイブのバージョンを見てもわかる通り、Radiantのバージョン0.6.2
に依存しているようなので、ここでRadiantをfreezeしておくと良いとの事。
freezeというのはアプリケーションをRAILS_ROOT/vendorの下にコピーすることを
言うんだそうです。RAILS_ROOT/vendorの下にアプリケーションがあると、そちらが
優先的に使われるんだと。とりあえず、おまじないという事でやっておいて損はない
でしょう。$ rake radiant:freeze:edge TAG=rel_0-6-2

データベースの初期化

データベースを初期化します。途中で3回の入力(1.初期化の確認、2.ログインユーザ名、
3.ログインパスワード)があるので、きちんと答えてあげてくださいね。$ rake production db:bootstrap

Radiantの実行

あとはRadiantを実行して終わりです。$ cd /home/radiant_project/
$ ruby script/server -e production


以上です。
私はこの環境、この手順でインストールできましたが、
環境やバージョンが異なるとまた違ってくると思いますので、
この記事を参考にいろいろ試してみてください。

Railsで「Lost connection to MySQL server during query」に遭遇した場合の対策

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは!TrinityTです。

さて、先日Rais開発中に「Lost connection to MySQL server during query」というエラーが多発する現象に遭遇しました。

出力されているメッセージどおり、「MySQLのコネクションがクエリ実行中にロスとした」ということらしい。

調べてみたところ、以下のようなことが原因で発生するようです。

 ● 一回のコネクションで通信パケットが大きい場合

 ● セッションに多量の情報が入っている場合 

 ● APサーバ、DBサーバの性能が低い場合

この現象方法の対処方法として「 mysql_retry_lost_connectionというライブラリを使うことで改善される?」との情報を得たため試してみました。

検証した環境

OS:WindowXP SP2

Ruby:1.8.6(インストール済)

Rails:1.2.6(インストール済)
 

検証 

1.mysql_retry_lost_connection インストール

 既にRubyGemsで提供されているため、gemコマンドでインストールします。

 # gem install mysql_retry_lost_connection

2.require追加

railsのenvironment.rbファイルに、以下の記述を行います。

require ‘mysql_retry_lost_connection’

3. APを再起動します。

自分の開発環境で使用してみたところ、適用してから一度も「Lost connection~」現象が発生することはありませんでした。しかし、時折無限コネクションループに陥り、APが固まってしまう現象が発生しました。

結論

コネクションループ現象が非常に怖いため、本番サーバでつかうのは止めたほうが良いと思います。しかし非力な開発環境などで本現象に悩まされている場合には、適用してみてはいかがでしょうか?

Linuxとかのbashで使えるショートカットキーをまとめた一覧

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

高瀬です。昔自分のブログにて書いたbashとかzshとかcshで使える

ショートカットキーの一覧を投稿してみます。

zshを使っている時によく使ってるショートカットキーを紹介してみる。

^はコントロールキーを押しながらと言う意味で使っています。

基本っぽいもの

コマンド意味
tabコマンドやファイルの自動補完(足りない文字を補完してくれる
^c実行中のコマンドを停止
^z実行中のコマンドを一時停止(fgで再開)

履歴系

コマンド意味
^pコマンドのひとつ前の履歴を呼び出す。(↑でも可)
^nコマンドのひとつ後の履歴を呼び出す。(↓でも可)
^rコマンドの履歴を検索する。

移動系

コマンド意味
^a一文字目に移動(homeキー)
^e最後に移動(endキー)
^f右に移動
^b左に移動

文字削除

コマンド意味
^k現在のカーソル位置から末尾まで削除
^d一文字削除(delキー)
^h一文字削除(BackSpaceキー)
^y削除した文字を貼り付け

画面操作

コマンド意味
^l画面をクリアする。
^s画面表示を停止する。
^q画面表示を再開する。

その他

コマンド意味
^dログアウト。

長い文字列をカットして表示するプログラム

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJでRuby on Railsを使ったWebの開発をしている本多と申します。

今回は「指定の文字数より長ければカットして表示する」というプログラムを紹介したいと思います。

Ruby のソースコードは以下です。

$KCODE=’u’ #文字コードを指定。今回はutf-8の場合
require ‘jcode’ #jlength(マルチバイトの文字列の長さを取得するメソッド)を使用するためにjcodeを読み込む

def cut_off(text, len)
  if text != nil
    if text.jlength < len
      text
    else
      text.scan(/^.{#{len}}/m)[0] + “…”
    end
  else
    ”
  end
end

puts cut_off(“任意の文字列”, 任意の文字数(整数))

上のソース内のtextとは「カットしたい文字列」、lenとは「カットしたい長さ」です。
指定の文字数よりも長い場合に正規表現を用いて先頭からlenの長さだけ文字列を抜き取り、末尾に”…”を付加したものを返します。
[0]が付いていますが、これはscanという関数が「パターンにマッチした文字列を、マッチした数だけ配列で返す」という特徴を持っているため、
text.scan(/^.{#{len}}/m) + “…”と書いてしまうと


[“マッチした文字列”] + “…”


になってしまい、配列 + 文字列という処理を行おうとしてエラーが出ます。

textの中身がlenより短い文字列の場合はそのまま返します。

この関数の最大の魅力は「日本語(マルチバイト)に対応しているという点です」
例えばcut_off(“こんにちは。KBMJの本多です。”, 10)と書くことで
「こんにちは。KBMJ…」という文字を得ることができます。


注意点としては、必ず『$KCODEの宣言』と『jcodeの読み込み』を行うようにしてください。
$KCODEが宣言されていない場合は正常な文字数で取り出せず、
jcodeが読み込まれていない場合はNoMethodErrorが出てしまいます。

ちなみに Ruby on Rails でcut_offを使用する場合はソースを書く場所がそれぞれ以下になります。

(RAILSROOT)/config/environment.rb

先頭の行に追加

$KCODE = ‘u’
require ‘jcode’
# Be sure to restart your web server when you modify this file.

# Uncomment below to force Rails into production mode when
————————-中略—————————-


(RAILSROOT)/app/helpers/application_helper.rb

# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper

  def cut_off(text, len)
    if text != nil
      if text.jlength < len
        text
      else
        text.scan(/^.{#{len}}/m)[0] + “…”
      end
    else
      ”
    end
  end

end


(RAILSROOT)/app/views/hoge/hogehoge.rhtml

<%= cut_off(“文字列”, 20) %>


これでRails上でも任意の文字数でカットできるようになりました。

例えばブログのタイトルのみを表示させるインデックスを作成する際、
長すぎるタイトルをそのまま表示するとレイアウトが崩れる原因になることがあります。
そんな時に役に立つのが、このcut_offです。
是非活用してみてください。
それでは。

GOOD RAILS!!

Scaffoldはどこからくるの? 後編

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJのエンジニアの高瀬です。

大分間が空いてしまいましたが、前回の続きを書く事にします。
前回は、http://doruby.kbmj.com/zenpou_on_rails/20071227/Scaffold___

前回はscaffoldを作って以下の様なファイルが出来ました。
     create  app/views/members
      create  app/views/members/index.html.erb
      create  app/views/members/show.html.erb
      create  app/views/members/new.html.erb
      create  app/views/members/edit.html.erb
      create  app/views/layouts/members.html.erb
      create  public/stylesheets/scaffold.css
      create    app/models/member.rb
      create    test/unit/member_test.rb
      create    test/fixtures/members.yml
      create    db/migrate
      create    db/migrate/001_create_members.rb
      create  app/controllers/members_controller.rb
      create  test/functional/members_controller_test.rb
      create  app/helpers/members_helper.rb

こちら、どこから来るのかを調べて行こうと思います。

結論を先に述べると、以下のパスにテンプレートが存在します。
{railsのインストール先}/lib/rails_generator/generators/components/scaffold/
これがどのような仕組みになっているかを追いかけて行きます。

前回、scaffoldは以下のコマンドによって生成されました。

      ruby script/generate scaffold Member name:string discription:text birthday:datetime
rubyの構文はruby –helpによって出してみたところ
    Usage: ruby [switches] [–] [programfile] [arguments]

      -0[octal]       specify record separator (\0, if no argument)
      -a              autosplit mode with -n or -p (splits $_ into $F)
      -c              check syntax only
      -Cdirectory     cd to directory, before executing your script
      -d              set debugging flags (set $DEBUG to true)
      -e ‘command’    one line of script. Several -e’s allowed. Omit [programfile]
      -Fpattern       split() pattern for autosplit (-a)
      -i[extension]   edit ARGV files in place (make backup if extension supplied)
      -Idirectory     specify $LOAD_PATH directory (may be used more than once)
      -Kkcode         specifies KANJI (Japanese) code-set
      -l              enable line ending processing
      -n              assume ‘while gets(); … end’ loop around your script
      -p              assume loop like -n but print line also like sed
      -rlibrary       require the library, before executing your script
      -s              enable some switch parsing for switches after script name
      -S              look for the script using PATH environment variable
      -T[level]       turn on tainting checks
      -v              print version number, then turn on verbose mode
      -w              turn warnings on for your script
      -W[level]       set warning level; 0=silence, 1=medium, 2=verbose (default)
      -x[directory]   strip off text before #!ruby line and perhaps cd to directory
      –copyright     print the copyright
      –version       print the version


となっています。
今回の場合、      “script/generate”[

がprogramfileで      “scaffold Member name:string discription:text birthday:datetime”
がargumentsになります。


というわけで、プログラムファイルの内容を見て見ましょう。
script/generateの中身はこんな内容になっています。      #!/usr/bin/env ruby
      require File.dirname(__FILE__) + ‘/../config/boot’
      require ‘commands/generate’


require は、ライブラリの呼び出しを行います。
ここで、      require File.dirname(__FILE__) + ‘/../config/boot’


は、プロジェクトのrailsの呼び出しを行っているRailsの基本的な所ですので、      require ‘commands/generate’


を見てみる事にします。
{Railsのインストール先}/lib/commands/generate.rb
を参照しましょう。      require “#{RAILS_ROOT}/config/environment”
      require ‘rails_generator’
      require ‘rails_generator/scripts/generate’

      ARGV.shift if [‘–help’, ‘-h’].include?(ARGV[0])
      Rails::Generator::Scripts::Generate.new.run(ARGV)


Railsのenvironment(環境の設定等)を呼び出し、rails_generatorとrails_generator/scripts/generateを呼び出して、
います。

ちょっと文章がソースばかりになるので、省略しますが、      require ‘rails_generator’


のrails_generator.rbにて、      require ‘rails_generator/base’
      require ‘rails_generator/lookup’
      require ‘rails_generator/commands’
      require ‘rails_generator/simple_logger’


など、generatorのファイルを呼び出しています。
そして、lookupによって下記のフォルダにあるファイルをgeneratorのコマンドに取り込んでいます。      #{::RAILS_ROOT}/lib/generators
      #{::RAILS_ROOT}/vendor/generators
      #{::RAILS_ROOT}/vendor/plugins/*/**/generators
      #{::RAILS_ROOT}/vendor/plugins/*/**/rails_generators
      #{Dir.user_home}/.rails/generators
      #{File.dirname(__FILE__)}/generators/components


そして実行段階。/lib/commands/generate.rbの中で実行されていたrunコマンドを見てみます。      Rails::Generator::Scripts::Generate.new.run(ARGV)


クラス名Rails::Generator::Scripts::Generateなのでrails_generator/scripts/generate.rbを見に行きます。
/lib/commands/generate.rbで3行目でrequireされてましたね。
見てみると      require File.dirname(__FILE__) + ‘/../scripts’

      module Rails::Generator::Scripts
        class Generate < Base
          mandatory_options :command => :create
        end
      end

というコードになっています。
run呼び出してるのにrunがない……。
Rails::Generator::Scriptsを拡張してるみたいです。
いったりきたりで大変ですね。

というわけでrails_generator/scripts.rbにいきます。        def run(args = [], runtime_options = {})
          begin
            parse!(args.dup, runtime_options)
          rescue OptionParser::InvalidOption => e
            # Don’t cry, script. Generators want what you think is invalid.
          end

          # Generator name is the only required option.
          unless options[:generator]
            usage if args.empty?
            options[:generator] ||= args.shift
          end

          # Look up generator instance and invoke command on it.
          Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
        rescue => e
          puts e
          puts ”  #{e.backtrace.join(“\n  “)}\n” if options[:backtrace]
          raise SystemExit
        end
長いのでrunのコードだけ採用しています。
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
にてジェネレータを見つけ、lookupでロードしたgenaratorの manifestを呼び出しています。
ここに関するコマンドはlib/rails_generator/commands.rbなどに定義されているのでそこから掘っていってください。

というわけで、送った”scaffold Member name:string discription:text birthday:datetime”の最初のscaffoldの指定により、
scaffoldを呼び出します。

ということで、lookupの中のソースコード一覧の中で、scaffoldのソースコードが存在するのは
{railsのインストール先}/lib/rails_generator/generators/components/scaffold/
でしたので、scafolldはここから来ている事がわかりました。

今回、
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
を検索している際、ヒットした
http://d.hatena.ne.jp/elm200/20070718/1184736852を途中から参考にさせていただきました。

というか、既にこちらのエントリがあったという事で、今回のエントリは二番煎じだったかな……と思いましたが、

とりあえず後悔公開CHUです。

aptanaのインストールと使い方について

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、KBMJの中平@railsエンジニアです。

本日は、私がrailsの開発で使用している「aptana」について紹介いたします。

aptanaとはeclipseベースで作られたIDEの一つです。また、eclipseのプラグインとして、aptanaを使用することも可能になっています。
aptanaは複数の言語での開発が可能で、ruby on rails の開発はもちろんphpなどの開発も可能です。
また、web編集に優れており、CSSやjavascriptの作成もしやすいという特徴があります。

参考に
http://ja.wikipedia.org/wiki/Aptana

今回は、このaptanaインストール使い方日本語化などについて書きたいと思います。■Aptana Stadioをインストールする。

  1. aptanaを動かすには、javaが必要なので、jreもインストールしておく。
  2. 続いてAptana Stadioをダウンロードしておき、インストール。
  3. 起動してみて問題なければOKです。

このままでも使えますが、日本語化したい場合は
eclipseの日本語化プラグインを使います。(aptanaはeclipseをベースに作られているため使用可能)
Pleiadeをダウンロードします。
Pleiadesをインストール(read meを参考にしてください)後、aptanaを再起動し、日本語化されていれば成功です。

■radrailsのプラグインインストール
aptanaインストールしただけでは、まだrailsの開発はできませんので、
radrailsというrails開発用のプラグインをインストールします。

  1. aptanaのヘルプ→ソフトウェア更新→検索およびインストールを選択
  2. インストールする新規フィーチャーを選択し、radrailsにチェックをいれて、次へを押してインストールを行います。


■aptanaでrailsやmongrel_railsを使うための設定

aptanaのツールバーから「ウィンドウ→設定」画面が開いたら「railsの項目」を選択し、使用するrails、rake、mongrel_railsのパスを設定します。

その他の項目は個人の環境や好みで調整してください。ここでは省略します。

mongrelはあらかじめインストールが必要です。

■railsプロジェクトの作成方法

aptanaのツールバーから「ファイル→新規作成→railsプロジェクト」を選んで作成します。
コマンドの rails hogehoge と一緒です。

■aptanaの使い方

ここからは個人の好みもありますが、
WEBrick(mongrel)の起動や、rake、ジェネレートの実行など、aptana上での使い方を説明します。

まず、aptanaのツールバーの「ウィンドウ→ビューの表示」から サーバー、rake タスク、ジェネレーターをそれぞれ選択
すると、それぞれの操作用のウィンドウ枠が下のほうに表示されます。
・サーバー(webrick,mongrelの起動)

 サーバーのウィンドウで右クリックし、プロジェクトと、サーバーのタイプを選び作成します。
 サーバーを起動するときは、緑色の矢印ボタンを押せばOKです。


・rake

 特に設定無し、実行したいrake を選ぶか 入力ボックスにコマンドを直接書いて実行してもOKです。


・ジェネレーター

作成したいものを選択ボックスから選んで入力ボックスに名前を書いて実行。

ちなみに、作成したのも削除するのもここで出来ます。


・そのほかにも、gem installや自動テストもaptanaで行うことが可能です。
・DBのテーブルも見ることが出来ますが、重いので余りお勧めできません。

・他にも色々な使い方ができますが、紹介し切れませんので、また後日面白い機能があれば紹介したいと思います。

また、aptanaは総合開発環境になっていて、ruby(rails)のほかにもphpやAir、iphoneの開発もプラグインを入れることで可能です。

私の周りでは、vimを使って開発している人が多いのですが、eclipseなどのIDEが慣れているという人はaptanaをインストールしてみてはいかがでしょうか?

追記

aptanaでrailsをデバッグする方法はこちらです。

ローカルメールサーバーでRailsでのメール受信のテストを便利に

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

 こんにちは。

 KBMJでRuby on Rails を使ったweb開発に携わっているyoppiといいます。

 メールを受信して処理する機能がある場合、いちいちテストサーバーにコードをアップしてとか面倒くさくないですか?

 Rails限定ですが、今回は、メール受信の処理をローカルで実行できるようになる方法をご紹介します。

 ActionMailServer – テストとか

 ローカルでテストするためのメールサーバーはこちらを使用します。設定・起動方法は上記ページに書いてありますのでご参照下さい。

 自分がよくわからなかったのは、Outlook ExpressやThunderbirdなどからローカルのメールサーバーにメールを送るのはどうしたらよいかということでした。

 結局は、ローカル受信テスト用のアカウントを新たに作成して、そのアカウントの送信(SMTP)サーバーのサーバー名にlocalhost、ポート番号に起動時に設定したもの(上記サイトだと10025)にすればいいだけでした。

 ユーザー名とパスワードの設定の部分は、指定しないにします。

Thunderbirdで送信サーバーを設定する場合

 ※Thunderbirdでは、アカウントの設定と送信サーバーの設定が別の項目として分かれているので注意が必要です。

 あとは、この作成したアカウントでメール作成を行い、送信すればオッケーです。上記サイトの例だと宛先を@example.comで終わるアドレスにしないと受信されません。どんなアドレスでも受信してほしい場合は、server.filter_rcpt の部分をコメントしておけばいいと思います。

Let’s enjoy testing!

railroadを用いたER図作成

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

KBMJでRuby on Rails を使ったweb開発に携わっているワイYといいます。

今回は、railroadを用いてRailsアプリのER図を作成してみたいと思います。

実行環境

OS Windows XP

Rails-1.2.5

postgres-8.2.5

graphviz-2.16.1 (railroadで出力したファイルを表示、変換するのに使用します)

etc

実行手順

gemを使ってrailroadをインストールします。gem install railroad

・ER図を生成したいrailsアプリのルートに移動します。

・下記のコマンドを実行すると、モデルのER図(models.dot)が作成されます。railroad -o models.dot -M
補足:-MとするとモデルのER図が生成され、-Cに変更するとコントローラーのER図が生成できます。-oで出力先を指定する事もできます。

・出力された.dotファイルはGraphvizを使う事で、表示させたり、jpgやpngなどに変換する事ができます。

・実際にできた画像は下図のようになります。

railroad

RailsでAmazon APIを利用する

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。
KBMJのプログラマのx5rです。

今回はRailsからAmazonAPIを利用してみようと思います。

環境

Railsの環境が既に構築されているものとします。
ちなみに私の環境は

Mac : IntelMac
OS : Mac OS X 10.5.1 Leopard$ script/about
About your application’s environment
Ruby version              1.8.6 (i686-darwin8.10.3)
RubyGems version          1.0.1
Rails version             2.0.2
Active Record version     2.0.2
Action Pack version       2.0.2
Active Resource version   2.0.2
Action Mailer version     2.0.2
Active Support version    2.0.2
Application root          /Users/username/dev/doruby
Environment               development
Database adapter          mysql

となっています。

それではAmazonAPIを使ってみます。

Amazon Web Serviceアカウントの取得

Amazon Web Serviceを利用するためには、ショッピング用とは別のアカウントが必要になりますので、持っていない場合はAmazon Web Serviceから取得します。

Amazon::Ecsをインストール

Amazon Web Serviceを利用するためのgemsライブラリ

Amazon::Ecs

をインストールします。$sudo gem install amazon-ecs

Railsプロジェクトを作成

$rails amazon
$cd amazon

API keyの設定

config/environment.rbで上記でインストールしたAmazon::Ecsを読み込み、そして上記で取得したAmazon Web Serviceを利用するためのAPI keyを設定します。

・・・
#一番下に記述
require ‘amazon/ecs’
Amazon::Ecs.debug = true
Amazon::Ecs.options = {
  :aWS_access_key_id => “XXXXXXXXXXXXXXXXXXXX”,
  :associate_tag => “xxxxxx-22”,
  :country => :jp
}

Modelの作成


Amazon Web Serviceから取得したデータを設定するモデルを作成します。

ここでは特にDBにはアクセスしないので、ActiveRecordを継承しないモデルを作成します。$ less app/models/item.rb
class Item
  attr_accessor :asin, :title, :image, :url
  def initialize(asin, title = nil, url = nil, image = nil)
    @asin = asin
    @title = title
    @url = url
    @image = image
  end
end

Controllerの作成

Amazon Web Serviceにアクセスするコントローラーを作成します。

今回はAmazonの音楽カテゴリから検索するようにします。
$script/generate controller amazon
$ less app/controllers/amazon_controller.rb
class AmazonController < ApplicationController
  def index
    if request.get?
    else
      @keyword = params[:keyword]
      res = Amazon::Ecs.item_search(@keyword, {
        :search_index => ‘Music’,
        :response_group => ‘Medium’,
        :sort => ‘salesrank’
      })
      @items = []
      res.items.each do |item|
        @items << Item.new(
          item.get(‘asin’),
          item.get(‘itemattributes/title’),
          item.get(‘detailpageurl’),
          item.get_hash(‘smallimage’)
        )
      end
    end
  end
end

Viewの作成

  • layoutを作成

$ less app/views/layouts/application.rhtml
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” lang=”ja” xml:lang=”ja”>
<head>
<meta http-equiv=”Content-Language” content=”ja” />
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”Content-Style-Type” content=”text/css” />
<meta http-equiv=”Content-Script-Type” content=”text/javascript” />
<meta http-equiv=”imagetoolbar” content=”no” />
<title>Amazon Web Service</title>
<%#= stylesheet_link_tag “screen”, :media => “all” %>
</head>
<body>
  <%= @content_for_layout %>
</body>
</html>

  • 検索/結果ページを作成

$ less app/views/amazon/index.rhtml
<p>Amazonからデータを取得</p>
<%- form_tag :controller => ‘amazon’, :action => ‘index’ do -%>
  <%= text_field_tag “keyword”, @keyword %><%= submit_tag “アマゾンで検索” %>
<%- end -%>

<%- if @items && @items.size > 0 -%>
<p>検索結果</p>
<table>
  <%- @items.each do |item| -%>
  <tr>
    <td><%= link_to(image_tag(item.image[:url], :size => “#{item.image[:width]}x#{item.image[:height]}”, :alt => item.title), item.url, :target => ‘_blank’) %></td>
    <td><%= item.asin %></td>
    <td><%= item.title %></td>
  </tr>
  <%- end -%>
</table>
<%- end -%> 

Webrickを起動 

$ script/server  

http://localhost:3000/amazonにアクセスすると検索ボックスが表示されますので、検索したいアーティス名を入力し、「アマゾンで検索」ボタンを押下すれば、Amazonから検索された商品が表示されます。

amazon_ecs

RubyGems って単語よく出てきますよね?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんばんは

KBMJ@O2です。

Ruby でシステム開発する場合、よくRubyGemsという言葉が

出てきますが、今回は、RubyGemsとはなにかを、ちょっぴり用語集に

追加しようと思います。

 RubyGems とは?

Ruby のライブラリパッケージ管理システムです。

これを用いることにより、さまざまな Ruby 用ライブラリを簡単にインストール

することができるようになります。

また、すでにインストールされているライブラリのバージョンアップも行うことが

できます。

実際に使い方は、Do Ruby(ドゥールビー)内で、紹介していますので参考

にしてみるて下さい。…

Ruby on Rails ってなになに?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

おはようございます。

KBMJ@O2です。

第一弾は、「Rubyとは」を書いてみましたが、実際のシステム開発ではフレームワークを使ってシステム開発を行うのですが、そのフレームワークが・・・

Ruby on Railsとは

第一弾で説明したRubyを使ったWebアプリケーション開発用フレームワークです。


Ruby On Rails は、短時間で高機能なWebアプリケーションを構築することができます。
Ruby自体の特徴であるシンプルな文法なので、書きやすくて、比較的簡単に作成できデータベースの設定も含めた、サービスを実際に動作させるまでの手続き、設定がスムーズに素早く、簡単にできることが最大の特長です。

また、MVCアーキテクチャに基づいて構築されているので、開発しやすくなっています。

ちょー入門、Webサーバ構築で知ってて損をしない用語(1)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

KBMJ@O2です。

今回は、Webシステムを作成するにあたり、Linuxで構築する場合の

サーバ周りの用語を紹介してみます。  

SSH とは

 暗号や認証の技術を利用して、安全にリモートコンピュータと通信する

ためのプログラムです。

 これがあることにより、Webサーバの場所に行き直接操作する必要が

なくなるので便利です。 

Xen とは

  Xen(ゼン)とはコンピュータの仮想化技術を実現するオープンソース

ソフトウェアのことです。

 これがあれば、1台のサーバ上に複数のOSを入れて動かせるので

複数のプロジェクトで複数のテスト環境を構築する時などは役に立ちます。  

Apache とは

 世界中でもっとも多く使われているWebサーバソフトウェアです。

HTTP(ハイパーテキストトランスファープロトコル)を、クライアントに出力

するためのHTTPDのデーモン(*)の一種です。

*:UNIXOSにおいて、メモリに常駐して様々なサービスを提供する

ソフトウェアの事です。

gemコマンドの紹介

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

皆さんはじめまして。

RubyGems の紹介をします。

一般的に Ruby 用ライブラリは RubyGems を採用していて、サイトで検索しても

RubyGems によるインストール方法しか掲載されていないケースが多くあります。

今回は、日常的なパッケージ管理の方法を中心に、基本的な使い方をご紹介します。
なお、RubyGems でパッケージを利用する際の使い方で、パッケージ作成などは
続編?でご紹介できればと思っておりますので、ご了承くださいませ。。。

RubyGemsのインストール
http://rubyforge.org/frs/?group_id=126

下記URLからRuby(ruby185-24.exe)をインストールをすることでRubyGemsも含まれています。
http://rubyforge.org/frs/?group_id=167 からWindows 用インストーラでインストール
※全てデフォルト設定でインストールしました。

インストールが完了したら、コマンドプロンプトを起動して、
下記のコマンド類を実際に試してみましょう。

◆バージョン確認# gem env
 RubyGems Environment:
   – VERSION: 0.9.2 (0.9.2)
   – INSTALLATION DIRECTORY: c:/ruby/lib/ruby/gems/1.8
   – GEM PATH:
      – c:/ruby/lib/ruby/gems/1.8
   – REMOTE SOURCES:
      – http://gems.rubyforge.org/

 # gem -v
 0.9.2

◆パッケージのインストール# gem install パッケージ名

c:/ruby/lib/ruby/gems/1.8/gems 配下にパッケージのフォルダが配置されます。


◆パッケージのバージョン検索# gem search -r パッケージ名

◆パッケージのアップデート# gem update パッケージ名

◆パッケージのインストールリスト# gem list パッケージ名

◆パッケージの消去(最新バージョンは残る)# gem cleanup パッケージ名

◆パッケージのアンインストール# gem uninstall パッケージ名

◆コマンドのヘルプ# gem help コマンド名

以上、最後までお付き合い頂きありがとうございした。

コマンドは他にもたくさんあるので、実際に自分の環境を使用して是非試してみてください。

最近人気な記事