Fedora 16によるRuby on Rails 3.2.2環境の構築Ruby on Rails 3.2.2環境を作るVirtualBox上にインストールしたFedora 16でRuby on Rails 3.2.2環境を構築する。Linuxのディストリビューションは何でも良いと思うが、最新のRails環境を構築するにはできるだけ新しいものを用意した方が良いようだ。
MySQLのインストールFedora 16はVirtualBoxの仮想マシンに予めインストールされているものとする。VirtulaBoxは4.1.10を利用した。Fedora 16のインストールの際には”ソフトウェア開発”等、ソフトウェアのコンパイルに必要なものを入れておけば良いだろう。また、Fedoraは”ソフトウェアの更新”で最新の状態にアップデートしてある。 MySQLはFedoraのインストール時にあわせて入れておいても良い。Railsで最低限必要なのは、
の3つのパッケージである。パッケージ名を見ていただければお分かりと思うが、MySQLのバージョンは5.5である。Fedoraを起動したときにMySQLも自動的に起動させるためにchkconfigで設定する。 # chkconfig mysqld on 情報:'systemctl enable mysqld.service'へ転送しています。 ln -s '/lib/systemd/system/mysqld.service' '/etc/systemd/system/multi-user.target.wants/mysqld.service' MySQLの文字コードをUTF-8に設定するために/etc/my.cnfで[mysqld]セクションに character-set-server=utf8 を追加する。これをやらないとデータベースを作成したときに文字コードがUTF-8にならず、文字化けする原因となる。この後、Fedoraを再起動すればMySQLが使えるようになる。再起動せずにMySQLを使いたい場合はserviceコマンドでMySQLを起動する。 # service mysqld start Redirecting to /bin/systemctl start mysqld.service データベースの作成次に、MySQLにrootユーザで接続する。 $ mysql -u root create databseでrails用データベースを作成する。データベースの名前は何でも良いが今回は"rails"データベースを作成する。 mysql> create database rails; Query OK, 1 row affected (0.00 sec) show databasesで作成されたデータベースを確認する。railsデータベースが作成されている。 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | rails | | test | +--------------------+ 5 rows in set (0.00 sec) useでrailsデータベースを使用(選択)する。 mysql> use rails; Database changed show tablesでrailsデータベース内のテーブルを確認する。 mysql> show tables; Empty set (0.00 sec) MySQLとの接続を終了するには\qコマンドを入力する。 mysql> \q MySQLのrailsデータベースにrootユーザで接続するためのコマンドは以下である。これが問題なければRailsからも使える状態になっているはずである。 $ mysql -u root rails Ruby 1.9.3のインストールRuby 1.9.3のインストールーの前にlibyamlを入れる必要がある。Fedoraの”ソフトウェアの追加/削除”等で以下の2つのパッケージを予め入れておく。
ruby 1.9.3をRubyのダウンロードサイトよりダウンロードする。本稿執筆時点での最新版はruby-1.9.3-p125.tar.gz(もちろんtar.gzでなくても良い)である。 ダウンロードしたファイルを適当なディレクトリに展開する。(tar.gz以外をダウンロードした場合は展開コマンドが異なる。) $ tar zxvf ruby-1.9.3-p125.tar.gz 展開されたディレクトリに移動してmakeする。make installだけはrootユーザにsuして行う必要がある。 $ cd ruby-1.9.3-p125/ $ ./configure $ make $ su # make install makeで生成されたファイル群が不要ならば通常ユーザに戻ってから削除する。 $ make clean インストールがうまくいけば/usr/localにRubyの各種ファイルがインストールされているはずである。 $ ruby -v ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux] Ruby on Rails 3.2.2のインストール現在のgemの一覧を確認しておく。 $ gem list --local *** LOCAL GEMS *** bigdecimal (1.1.0) io-console (0.3) json (1.5.4) minitest (2.5.1) rake (0.9.2.2) rdoc (3.9.4) もし、ここで以下のようなメッセージが表示されたらlibyamlがインストールされていない。libyamlをインストールした後で、./configureからmake installまでの手順を再度行ってRubyを入れ直せば問題ない。 /usr/local/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>': It seems your ruby installation is missing psych (for YAML output). To eliminate this warning, please install libyaml and reinstall your ruby. Railsのインストールは至って簡単で、基本的にはrootユーザで下記のコマンドを実行するだけである。ただし、インターネットに接続できる環境でなければならない。 # gem install rails Railsアプリケーションの作成試しにRailsアプリケーションを作成してみる。データベースには先ほどインストールしたMySQLを使う。 $ rails new test -d mysql するとRailsで必要ないろいろなファイルが生成され、以下のようにパスワードの入力を促される。ここでログインしているユーザのパスワードを入力する。 We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. Enter your password to install the bundled RubyGems to your system: mobile は sudoers ファイルではありません。この事象は記録・報告されます。 Fetching gem metadata from https://rubygems.org/......... Gem::Exception: Cannot load gem at [/usr/local/lib/ruby/gems/1.9.1/cache/rake-0.9.2.2.gem] in /home/mobile/rails/post An error occured while installing rake (0.9.2.2), and Bundler cannot continue. Make sure that `gem install rake -v '0.9.2.2'` succeeds before bundling. Bundlerがsudoコマンドで何かをインストールしようとしているので、ログイン中のユーザ(この例ではmobile)がすべてのコマンドをroot権限で実行できるようvisudoで設定する。rootユーザにsuしてvisudoで以下の行を追加する。 mobile ALL=ALL もし、ここでmysql.hが見つからないと言われたら、mysql-develがインストールされていないのでFedoraの”ソフトウェアの追加/削除”等でmysql-devel-5.5.20-1.fc16をインストールする。 mysql.h is missing. please check your installation of mysql and try again. また、上記を設定をすべて行ってもエラーが解消しない場合、rootになって適当なアプリケーションを作成し、Bundlerによるgemのインストールが終わったらまた一般ユーザに戻ってアプリケーションを作成するとうまくいくかも知れない。 一旦、作成済みのアプリケーションを削除してsmartphone_dbアプリケーションを作成する。パスワードの入力は再度求められたが、アプリケーションの作成はうまくいった。 $ rails new smartphone_db -d mysql 以下のようなメッセージが表示されたら成功である。 Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. データベース設定と動作確認アプリケーションの作成が成功したら、作成されたアプリケーションディレクトリのconfig/database.ymlを編集する。MySQLをrootユーザでパスワードなし、railsデータベースを使う場合は以下のようになる。 development: adapter: mysql2 encoding: utf8 reconnect: false database: rails pool: 5 username: root password: socket: /var/lib/mysql/mysql.sock test:、及びproduction:についても同様に設定しておく。 データベースの設定が済んだら、いよいよscaffoldで各種ファイルの生成を行う。scaffoldは作成したアプリケーションのディレクトリで行う。 $ rails g scaffold phone name:string manufacturer:string price:integer release_date:date invoke active_record create db/migrate/20120316071539_create_phones.rb create app/models/phone.rb invoke test_unit create test/unit/phone_test.rb create test/fixtures/phones.yml route resources :phones invoke scaffold_controller create app/controllers/phones_controller.rb invoke erb create app/views/phones create app/views/phones/index.html.erb create app/views/phones/edit.html.erb create app/views/phones/show.html.erb create app/views/phones/new.html.erb create app/views/phones/_form.html.erb invoke test_unit create test/functional/phones_controller_test.rb invoke helper create app/helpers/phones_helper.rb invoke test_unit create test/unit/helpers/phones_helper_test.rb invoke assets invoke coffee create app/assets/javascripts/phones.js.coffee invoke scss create app/assets/stylesheets/phones.css.scss invoke scss create app/assets/stylesheets/scaffolds.css.scss scaffoldが成功したら、DBにマイグレーションする。 $ rake db:migrate (in /home/kazumasa/rails/smartphone_db) == CreatePhones: migrating =================================================== -- create_table(:phones) -> 0.2977s == CreatePhones: migrated (0.3001s) ========================================== マイグレーションが成功したらWEBrickでアプリケーションを起動する。WEBrickの標準のポートは3000である。ポートを指定する場合はsの後に-p 1234等と指定すれば良い。 $ rails s => Booting WEBrick => Rails 3.2.2 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2012-03-16 16:17:43] INFO WEBrick 1.3.1 [2012-03-16 16:17:43] INFO ruby 1.9.3 (2012-02-16) [i686-linux] [2012-03-16 16:17:43] INFO WEBrick::HTTPServer#start: pid=6591 port=3000 これでRailsアプリケーションが作成できた。Fedoraのブラウザ(Firefox)でhttp://localhost:3000/phonesにアクセスして画面が表示されればOK。 補足config/database.ymlを設定した後はrails dbconsoleでMySQLクライアントを起動できる。 $ rails dbconsole マイグレーションされたphonesテーブルの中身を確認するにはselectすれば良い。 mysql> select * from phones; +----+----------------+-----------------------------+-------+--------------+---------------------+---------------------+ | id | name | manufacturer | price | release_date | created_at | updated_at | +----+----------------+-----------------------------+-------+--------------+---------------------+---------------------+ | 1 | Xperia acro | ソニー・エリクソン | 50000 | 2011-07-09 | 2012-03-16 07:22:54 | 2012-03-16 07:22:54 | | 2 | Galaxy SII LTE | サムスン | 60000 | 2011-11-24 | 2012-03-16 07:25:52 | 2012-03-16 07:25:52 | +----+----------------+-----------------------------+-------+--------------+---------------------+---------------------+ 2 rows in set (0.00 sec) (2012/03/16)
Copyright© 2004-2022 モバイル開発系(K) All rights reserved.
[Home]
|