LoginSignup
9
13

More than 5 years have passed since last update.

rails環境を用意する手順いろいろ

Last updated at Posted at 2016-11-23

自分用メモです。
まっさらなrails環境が欲しいときにいつも調べているので。

rbenv + bundlerでrails環境を用意する手順

自分的には1番ベーシックなやり方です。
rbenvとbundlerが入っていることが前提です。
また、ここではruby2.3.0、rails5.0.0の場合とします。

$ mkdir myapp
$ cd myapp
$ rbenv versions

2.3.0が入っていなければinstallする
$ rbenv install 2.3.0

$ rbenv local 2.3.0

2.3.0に*が付いていることを確認する
$ rbenv versions

$ bundle init
$ vim Gemfile
# railsのところのコメントアウトを外し、railsのバージョンを指定しておく
gem 'rails', '~> 5.0.0'
$ bundle install --path vendor/bundle
$ bundle exec rails new .
GemfileはYで上書きする

参考 http://qiita.com/youcune/items/222777415f00d19cccb4

dockerを使ってrails環境を用意する手順

rails + postgresqlの場合

前提としてdocker for macを使ってdocker環境を構築しました。
docker初心者なのでこちらを参考にruby2.3.0、rails5.0.0、postgresqlの場合とします。

$ mkdir myapp
$ cd myapp
$ touch Dockerfile
$ vim Dockerfile
FROM ruby:2.3.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
$ touch Gemfile
$ vim Gemfile
source 'https://rubygems.org'
gem 'rails', '5.0.0'
$ touch Gemfile.lock
$ touch docker-compose.yml
$ vim docker-compose.yml
docker-compose.yml
version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3010:3000"
    depends_on:
      - db

3010:3000のところはmacのport3010番とコンテナ内の3000番をつなぐという意味になります(例えばmacのlocalhost:3000で何も起動していなければ3000番のままで問題ないので良いです)

$ docker-compose run web rails new . --force --database=postgresql --skip-bundle

rails newすると生成されるファイルなどが生成されているか確認する
$ ls -l

$ vim Gemfile
# 以下の行のコメントアウトを外す
gem 'therubyracer', platforms: :ruby
$ docker-compose build
$ vim config/database.yml
config/database.yml
development: &default
  adapter: postgresql
  encoding: unicode
  database: postgres
  pool: 5
  username: postgres
  password:
  host: db

test:
  <<: *default
  database: myapp_test
$ docker-compose up

別のターミナルで

$ docker-compose run web rake db:create

そして http://localhost:3010/ にアクセスすると以下のページが表示されます。

スクリーンショット 2016-11-24 0.25.26.png

編集してみる

トップページをオリジナルのページに変更してみます。
以下のコマンドでwelcome controllerとindex actionを作ります。

$ docker-compose run web rails generate controller welcome index

routingを変更します。

$ vim config/routes.rb
config/routes.rb
# get 'welcome/index'
root 'welcome#index'

そして http://localhost:3010/ にアクセスすると、コンテナ側にもすぐ反映されます。

スクリーンショット 2016-11-24 0.44.28.png

rails + mysqlの場合

こちらを参考にしました。
上記手順の$ vim docker-compose.ymlまでは同じです。

docker-compose.yml
version: '2'
services:
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: hogehoge
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3011:3000"
    depends_on:
      - db

注意

environment:
  MYSQL_ROOT_PASSWORD: hogehoge

この部分がないと起動したときに以下のようなエラーになります(参考)。

db_1   | error: database is uninitialized and password option is not specified
db_1   |   You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

手順に戻って、以下を実行します。

$ docker-compose run web rails new . --force --database=mysql --skip-bundle

rails newすると生成されるファイルなどが生成されているか確認する
$ ls -l

$ vim Gemfile
# 以下の行のコメントアウトを外す
gem 'therubyracer', platforms: :ruby
$ docker-compose build
$ vim config/database.yml
config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: hogehoge
  host: db

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
$ docker-compose up

別のターミナルで

$ docker-compose run web rake db:create

そして http://localhost:3011/ にアクセスすると以下のページが表示されます。

注意

$ docker-compose upで以下のようなエラーになる場合は、ここに書いてある通りにtmp/pids/server.pidを削除して$ docker-compose upすると起動できます。

web_1  | => Booting Puma
web_1  | => Rails 5.0.0 application starting in development on http://0.0.0.0:3000
web_1  | => Run `rails server -h` for more startup options
web_1  | A server is already running. Check /myapp/tmp/pids/server.pid.
web_1  | Exiting
myappm_web_1 exited with code 1
9
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
13