ruby環境整備からrailsセットアップまで

Page content

rubyとrailsを入れるまでのメモを。centosとmacのため。

rails installation

過去記事「ruby on rails 環境構築〜blogアプリケーション作成 (centos 5.7 x86_64)」は古そうだったので、 http://www.rubylife.jp/railsinstall/ を見てやった。

0. rbenv-updateを使ってrbenv, rubyのバージョンアップ

  • (centos) まずは github から rbenv, ruby-build を clone する: (macはhomebrewから)

    git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
    git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
    
  • .bashrc などの rc ファイルに以下を追加

    ### rbenv
    if [ -d ${HOME}/.rbenv ]; then
      export PATH=$HOME/.rbenv/bin:$PATH
      eval "$(rbenv init -)"
      . $HOME/.rbenv/completions/rbenv.zsh
    fi
    
  • rbenv コマンドが動くことを確認

    source ~/.bashrc
    rbenv --version
    
  • rbenv-update をインストール (mac, centos)

    [ -z "$RBENV_ROOT" ] && export RBENV_ROOT="$HOME/.rbenv"
    mkdir -p "$RBENV_ROOT/plugins"
    git clone https://github.com/rkh/rbenv-update.git "$RBENV_ROOT/plugins/rbenv-update"
    
  • rbenv-update をインストールしたので rbenv update で rbenv をアップデートします。

    $ rbenv update
    updating rbenv
     |  From https://github.com/sstephenson/rbenv
     |  13a474c..1a7f49d  master     -> origin/master
    略
    
  • rbenvのバージョンを確認します。

    $ rbenv --version
    rbenv 0.4.0
    
  • rbenvがアップデートされてバージョンがあがりました。

1. 最新のrbenvで最新のrubyをインストール

  • (centos) ruby入れようとしたら怒られたので先に入れるパッケージがありました。
# yum install -y readline-devel
  • インストール可能な ruby のバージョンの確認は以下のコマンドか webでどぞ

    $ rbenv install -l
    
  • 20151205時点ではruby 2.3.1がlatest stable versionでした。

    $ rbenv install -v 2.3.1
    
  • インストールされているRubyのバージョンを確認します。

      $ rbenv versions
        system
      * 2.1.2 (set by /usr/local/rbenv/version)
        2.2.3
        2.3.1
    

ちゃんと2.3.1が入っています。

  • rehashする

    $ rbenv rehash
    
  • 普段使うデフォルトのrubyに指定する。

    $ rbenv global 2.3.1
    
  • version確認

    $ ruby -v
    

2. rubygems

  • update gem
    $ gem update --system
    $ gem -v
    2.6.6
    

3. rails

  • install
    $ gem install rails
    
  • version
    $ rails -v
    Rails 5.0.0.1
    

rails test (rails + apache + passenger + mysql)

  • apache

    # yum install httpd httpd-devel curl-devel
      (以下、必要ならhttpd稼働のための設定を)
    
  • bundler

    $ gem install bundler
    
  • passenger

    $ gem install passenger
    $ passenger-install-apache2-module
    
  • mysql インストールと設定

    # yum install -y mysql-devel mysql-server mysql
    $ gem install mysql2
    

mysqlの準備

  • MySQL初期化処理
    $ sudo service mysqld start #初回の初期化処理
    $ sudo mysqladmin -u root password pass(=passははっきんぐなPW. あとで使う)
    $ sudo /sbin/chkconfig mysqld on
    

MySQLにデータベース作成する。環境ごとに3つ作る。(db_dev, db_test, db_prod, 適宜読み替えて作ってね)

$ mysql -u root -p
mysql>
 CREATE DATABASE db_dev DEFAULT CHARACTER SET utf8;
 CREATE DATABASE db_test DEFAULT CHARACTER SET utf8;
 CREATE DATABASE db_prod DEFAULT CHARACTER SET utf8;

※文字コード指定しないとデフォルトだとlatin1でできるので注意。MySQLサーバ側の設定でデフォルト文字コード指定してもよいけど、この場ではとりあえず明示的にCREATE DATABASEで指定してます。

次にMySQLにユーザを作成する。これも環境ごとに3つ作る。

mysql>
 GRANT ALL PRIVILEGES ON db_dev.* TO user_dev@localhost IDENTIFIED BY 'pass_dev' WITH GRANT OPTION;
 GRANT ALL PRIVILEGES ON db_test.* TO user_test@localhost IDENTIFIED BY 'pass_test' WITH GRANT OPTION;
 GRANT ALL PRIVILEGES ON db_prod.* TO user_prod@localhost IDENTIFIED BY 'pass_prod' WITH GRANT OPTION;

試しにユーザログイン確認しておく。

$ mysql -u user_dev -p db_dev
Enter password:
$ mysql -u user_test -p db_test
Enter password:
$ mysql -u user_prod -p db_prod
Enter password:

Rails側の設定

  • ここからRails側の設定。databaseはmysqlを指定して新たにrails applicationを作る
    $ rails new -d=mysql myapp
    $ cd myapp
    

config/database.yml を以下のように変更する。 共通設定はdefaultでまとめて、環境ごとの差分だけ分ける。

default: &default
  adapter: mysql2
  encoding: utf8
  reconnect: false
  pool: 5
  socket: /var/lib/mysql/mysql.sock

development:
  <<: *default
  database: db_dev
  username: user_dev
  password: pass_dev

test:
  <<: *default
  database: db_test
  username: user_test
  password: pass_test

production:
  <<: *default
  database: db_prod
  username: user_prod
  password: pass_prod

Gemfileを変更

gem 'execjs'
gem 'therubyracer'
#gem 'sqlite3'
gem 'mysql2', '~> 0.4.2'

Gemfile更新したらbundle install

$ bundle install
  • bookアプリを作ってみる
    $ bundle exec rails generate scaffold book title:string author:string outline:text
    

最後にDBのマイグレーションする。

$ bundle exec rake db:migrate

passenger, apacheの設定

  • symlink

    $ sudo ln -sv ~george/myapp/public /var/www/html/myapp
    
  • /etc/httpd/conf.d/rails.confの設定

    LoadModule passenger_module /usr/local/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/passenger-5.0.21/buildout/apache2/mod_passenger.so
    <IfModule mod_passenger.c>
      PassengerRoot /usr/local/rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/passenger-5.0.21
      PassengerDefaultRuby /usr/local/rbenv/versions/2.2.3/bin/ruby
    </IfModule>
    
    <VirtualHost *:80>
      ServerName www.example.com.
      DocumentRoot /var/www/html
    
      RackBaseURI /myapp
      RailsEnv development
      <Directory /myapp>
        Options ExecCGI FollowSymLinks
        Options -MultiViews
        AllowOverride All
        Order Allow,Deny
        Allow From All
      </Directory>
    </VirtualHost>
    
  • これでhttpd startすれば、 /myapp にアクセスするとwelcome aboard!が表示される