Archive for the ‘RubyOnRails’ Category

Snow LeopardでRuby On Rails環境構築

snowleopard   rails
 
 
1. Snow Leopardでのデフォルト環境確認

$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
$ gem -v
1.3.1
$ rails -v
Rails 2.2.2

 
2. mysql インストール

http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg こちらから Mac OS X 10.5 (x86_64) をダウンロード。ディスクイメージを開いたら、デフォルトのオプションのまま、まず「mysql-5.1.38-osx10.5-x86_64.pkg」をインストール。次に、同じくデフォルトオプションのまま「MySQLStartupItem.pkg」をインストールし、さらに「MySQL.prefPane」をダブルクリック
 
3. mysql 操作

$ /usr/local/mysql/bin/mysql -u root -p
Enter password:
データベース作成:
mysql> create database mysqldemo default character set utf8;
ユーザー作成、権限付与:
mysql> grant all privileges on mysqldemo.* to
    testuser@localhost identified by 'password';

 
4. gem install mysql

$ sudo env ARCHFLAGS="-arch x86_64" gem install mysql --
   --with-mysql-config=/usr/local/mysql/bin/mysql_config

(以下のエラーが発生した場合はXcodeをインストールしてください)

Building native extensions. This could take a while…
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config
mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.8.1 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

 
5. rails プロジェクト作成

$ rails -d mysql mysqldemo

database.yml ファイル編集

development:
    adapter: mysql
    encoding: utf8
    database: mysqldemo
    pool: 5
    username: testuser
    password: password
    socket: /tmp/mysql.sock

 
6. scaffold 作成

$ script/generate scaffold user email:string name:string age:integer
$ rake db:migrate

 
7. サーバー起動して確認

$ script/server

Heroku, ブラウザでRubyOnRails

自宅Fedora、Vista、MacOSX、会社WinXP、いずれもRubyOnRails環境を構築してみました。はじめはちょっと難しかったのですが、なれていくと20分ぐらいで終わる作業です。しかし、自宅サーバー以外のところで書いたコードをどこかのサーバーに上げない限りはインターネット上でみることはできません。それと複数端末で共有するにはSVNかCVSを利用してチェックアウト、コミットといった作業が発生します。面倒!

先月ネットでブラウザだけでRubyOnRailsを使うことができると見かけたので、検索してみたところHerokuを発見。ユーザ登録してから2週間がすぎでもまだウェディング状態でした。今日朝起きたら携帯にherokuからのメールが届いてました。ちょっと興奮。さっそくログインしてAppを使ってみました。すごい!こんなことまでできるんだ!データベース、ログ、コンソールでRailsのコメント実行、一番気に入りはエディタです。かっこういい!。まだ実際試したことはないが、プラグインも自由にインストールできるらしいです。

http://footmark.heroku.com

RMagickを使ってみよう

新年会が終わって撮った写真をFriendsと共有しようと思ってRailsで作ってみました、機能としては問題なかったが、デジカで撮った写真をそのままのサイズでアップロードして一覧に表示してしまうとメモリ不足でPCが死んじゃいます。ちなみに画像は平均1.4MB、一ページ9枚表示。

50何枚もある写真を一つずつ開いてサイズを修正するのも可能ですが、時間の無駄、絶対やりたくない!そこでRubyになんかイメージファイルを操作するライブラリがないかと探してみたところ、RMagickを発見。書いてあるソースコードみると自分がやりたいことに合ってたので早速試しようと思った。

環境:Fedora8, Ruby 1.8

# yum install ImageMagick
# yum install ImageMagick-devel
# gem install RMagick

ここでエラーです。(ERROR: could not find RMagick locally or in a repository)
gemにないの?と思ってほかの方法でインストールしようと思ったが、もしかして

# gem install rmagick
Building native extensions. This could take a while…
Successfully installed rmagick-2.2.0
1 gem installed

成功したようです。

#!/usr/bin/ruby
require ‘rubygems’
require ‘RMagick’
img = Magick::ImageList.new(‘test.jpg’)
img.resize(200, 200).write(‘new.jpg’)

お~小さい画像が出てきました!感動!
もうすこし勉強して、元画像のサイズと比例にある画像を作ること。

Rails2.0のScaffoldを使ってみる

バージョンアップされていろいろ変わりました。今回はプロジェクトの生成と簡単にScaffoldを使ってみました。

macbook:rails king$ rails demo
create
create app/controllers
create app/helpers
create app/models
create app/views/layouts
create config/environments
create config/initializers
create db
create doc
…..
create public/javascripts/application.js
create doc/README_FOR_APP
create log/server.log
create log/production.log
create log/development.log
create log/test.log
macbook:rails king$ cd demo
macbook:demo king$ vi config/database.yml
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
# adapter: sqlite3
# database: db/development.sqlite3
# timeout: 5000
adapter: mysql
database: demo
host: localhost
username: king
password: {password}

macbook:demo king$ script/generate scaffold user email:string name:string age:integer
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/users
exists app/views/layouts/
exists test/functional/
exists test/unit/
create app/views/users/index.html.erb
create app/views/users/show.html.erb
create app/views/users/new.html.erb
create app/views/users/edit.html.erb
create app/views/layouts/users.html.erb
create public/stylesheets/scaffold.css
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/user.rb
create test/unit/user_test.rb
create test/fixtures/users.yml
create db/migrate
create db/migrate/001_create_users.rb
create app/controllers/users_controller.rb
create test/functional/users_controller_test.rb
create app/helpers/users_helper.rb
route map.resources :users
macbook:demo king$ rake db:migrate
(
in /Users/king/develop/localhost/rails/demo)
== 1 CreateUsers: migrating ===================================================
– create_table(:users)
-> 0.0032s
== 1 CreateUsers: migrated (0.0033s) ==========================================

macbook:demo king$ script/server

ブラウザで確認してみる。http://0.0.0.0:3000/users/new

rails-scaffild.png

Mac RubyOnRails

なんとMac OS X Leopard にはデフォルトでRubyOnRailsインストールされてます。バージョンは以下のようになります。

macbook:~ king$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]
macbook:~ king$ gem -v
0.9.4
macbook:~ king$ rails -v
Rails 1.2.6

ちょっと前にRailsのバージョンが2.0になったので1.2.6から2.0にアップしたいと思います。変更点などみると下手にバージョンアップしちゃうと1.2.6で開発したものが動かなくなる可能性があるので、ちょっと怖い。そこで元のバージョンを残してバージョンアップしたいと思います。

macbook:~ king$ sudo gem install rails –include-dependencies
Password:
Successfully installed rails-2.0.2
macbook:~ king$ rails -v
Rails 2.0.2
macbook:~ king$

意外と一瞬で完了しました。バージョン確認で2.0.2が正しくインストールされてることを確認する。前のバージョンはどうなるの?Railsはちゃんと管理してくれます。バージョンアップされた場合、上書きではなく、追加です。以下のコマンドで古いバージョンを呼び出してみます。

macbook:~ king$ rails -v
Rails 2.0.2
macbook:~ king$ rails _1.2.6_ -v
Rails 1.2.6
macbook:~ king$ rails _2.0.2_ -v
Rails 2.0.2
macbook:~ king$

引数になにも指定しなければデフォルトバージョンになり、バージョンを指定すればそのバージョンで実行します。プロジェクトの生成コマンド rails の時一回してからはscriptなどはバージョン指定が必要なくなります。プロジェクトが生成されると同時に使用バージョンが決まるので。変更したい場合は「/config/environment.rb」のRAILS_GEM_VERSION の値を実行させたいバージョンを指定すればOKです。

phpMyadminエラー(Rails)

Windows版のRailsをインストールすると便利!名前もInstantRails、名前のとおりにこれ一つインストールするだけですぐにRailsを動かすことができます。中にはRuby、Rails、Apache、mysql、おまけにphpMyadminまで付いていました。phpMyadminとは、web上からmysqlを操作できるツールです。初心者にとってコマンドプロンプトからなじみのないsqlコマンドたたくよりはずっと効率よく開発できると思います。

しかし、 デフォルトの設定ではどうも上手く動いてくれない。エラーメッセージから見るとutf-8 が認識できない。そこでlanguageを調べてみてもちゃんとutf-8になってるし、ネット調べてみたら、なんか大文字、小文字の関係らしい。phpmyadmin/lang/japanese-utf-8.inc.php の先頭に定義してあるUTF-8 を小文字にutf-8にしたら上手く動いてました。汗

プロジェクトを作成してみる

前回は基本的なインストールと基本設定を行いました。今回はテストプロジェクトを作成してみます。

プロジェクトの作成
# rails demo
# cd demo
中をのぞいてみると、app, components, config, db などが生成されたことを確認できます。

サーバーの起動
# ruby script/server

アクセスしてみる
http://localhost:3000
Welcome aboardページが表示されました。
もし以下のエラーがでたらMySQLの問題だと思います。
–エラー
ActiveRecord::StatementInvalid in BlogController
以下のコマンドでMySQLの設定を行います。
# gem install mysql — –with-mysql-lib=/usr/lib/mysql

http://www.rubyonrails.org/screencastsで提供してるCreating a weblog in 15 minutesをうごかしてみたところまたまたエラー。textilizeが使えない。「undefine method」というエラー。
textilizeはRedClothというモジュールを使用しており、Railsのバージョンと依存性が強いらしく、バージョンにあわせていろいろ試したほうがよいと思います。RedCloth-3.0.4とRails 1.1.6 の組み合わせでは上手く行きました。
# gem install redcloth –version “3.0.4″

RubyOnRailsのインストール

先先週から最近流行のRubyOnRailsを弄ってみました。以下インストール、設定をメモとして残します。

環境:Linux Fedora4
Ruby本体のインストール
# yum install ruby
# yum install irb
# yum install ruby-devel
# yum install rdoc

RubyGemのインストール
http://www.rubyonrails.org/down からRubyGemsをダウンロードする。
*.tgz, *.zip ファイル解凍してから setup.rb を実行
# ruby setup.rb
これでgemコマンドが使えるようになります。

Railsのインストール
Railsフレームワークはgemを使ってネット経由でインストールする形になります。
# gem install rails –include-dependencies

これで基本的設定は完了です。
次回はdemoプロジェクトの作成です。