今回は、ローカル開発環境(Mac)で、Railsプロジェクトを新規作成したいと思います。
今まで、私は、Railsプロジェクトを新規作成する場合に、単純に「rails new」してきました。
ただ、今回は、Bundlerを使って新規作成をするとグローバルな環境ではなく、ローカル環境下で依存関係を綺麗に管理できると知ったので、その方法でRailsプロジェクトを作成してみたいと思います。
【目 次】
1.Bundlerのインストール
$ rbenv exec gem install bundler
$ rbenv rehash
$ rbenv exec bundle --version
2.プロジェクトの新規作成
今回のプロジェクト名は、「pgnyumon」として作成します。
$ mkdir pgnyumon
$ cd pgnyumon
$ bundle init
Gemfileが生成されるので、記載されているgem “rails”のコメントを外します。
# A sample Gemfile
source "https://rubygems.org"
gem "rails"
bundler経由で、Railsをインストールします。
$ bundle install --path vendor/bundle
結構時間がかかって、こんなエラーが出ました。
Bundler::GemspecError: Could not read gem at /Users/kanako/tickle_dev/pgnyumon/vendor/bundle/ruby/2.2.0/cache/nokogiri-1.6.6.2.gem. It may be corrupted.
An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.6.2'` succeeds before bundling.
ひとまず、メッセージに表示されているように、下記を実行。
gem install nokogiri -v '1.6.6.2'
nokogiriのインストールが出来たので、再度、トライしてみます。
$ bundle install --path vendor/bundle
でも、やっぱり怒られます。
Bundler::GemspecError: Could not read gem at /Users/kanako/tickle_dev/pgnyumon/vendor/bundle/ruby/2.2.0/cache/nokogiri-1.6.6.2.gem. It may be corrupted.
An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.6.2'` succeeds before bundling
色々と調べて試したけど、すべてうまく行かずに途方にくれていた所、エラーメッセージをよく見てみると「cache/nokogiri-1.6.6.2.gem」となっているので、cacheだったら一度削除してみたらうまくいくかも?と削除してみます。
rm -rf ./vendor/bundle/ruby/2.2.0/cache/nokogiri-1.6.6.2.gem
そして、再度、実行してみます。
$ bundle install --path vendor/bundle
うまく、インストールができました!!
次は、Rails新規プロジェクトを生成します。
今回のプロジェクトは、Rails標準のテスティングフレームワーク「test-unit」を利用するのではなく「Rspec」を利用したいので、オプションに「test-unit」は利用しないように指定します。
データベースは、「mysql」を利用したいので、それも指定しました。
$ bundle exec rails new . --skip-test-unit -d mysql
Railsプロジェクトが生成できたら、Gemfileのmysqlの記述を変更します。
プロジェクト生成直後は、バージョンの指定がありませんが、このように指定します。
というのも、バージョンを指定しないと、後のrails serverを起動時にエラーになります。
gem 'mysql2', '~> 0.3.20'
そして、bundle install
bundle install
3.mysqlにデータベースを作成
次に、データベースを作成します。
Railsのデータベースに関する設定は、「config/database.yml」にあります。
中身を見てみましょう。
$ cat config/database.yml
# MySQL. Versions 5.0+ are recommended.
#
# Install the MYSQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# http://dev.mysql.com/doc/refman/5.0/en/old-client.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /tmp/mysql.sock
development:
<<: *default
database: pgnyumon_development
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: pgnyumon_test
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
database: pgnyumon_production
username: pgnyumon
password: <%= ENV['PGNYUMON_DATABASE_PASSWORD'] %>
Railsでは、簡単に開発用・テスト用・本番用のデータベースを使い分けることができます。
プロジェクト名である「pgnyumon」の開発用データベースは「pgnyumon_development」。
テスト用のデータベースは「pgnyumon_test」で、本番用は「pgnyumon_production」です。
rakeコマンドを利用して次のように実行します。
$ rake db:create
mysqlにログインして、データベースが作成できているか確認します。
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 28
Server version: 5.6.26 Homebrew
Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+----------------------+
| Database |
+----------------------+
| information_schema |
| mysql |
| pgnyumon_development |
| pgnyumon_test |
| test |
+----------------------+
8 rows in set (0.01 sec)
開発用とテスト用のデータベースが作成されています。
次に、Webサーバーを立ち上げます。
bundle exec rails s
「http://localhost:3000」にアクセスしてみましょう。
Railsプロジェクトのトップページが表示されました!
4.本番用MySQLアカウントのパスワードを設定
config/database.ymlの、productionに、パスワードを設定します。
パスワードは任意で良いのですが、今回は、pwgenというMacで利用できるパスワード生成ツールを利用したいと思います。
pwgenをインストールします。
$ brew install pwgen
下記が、pwgenの利用方法です。
$ pwgen [ OPTION ] [ pw_length ] [ num_pw ]
pw_lengthはパスワードの文字数で、num_pwは生成する個数になります。
オプションは、色々とありますが、今回はこんな感じで実行してみました。
「-B」は、lと1, 0とOなどの紛らわしい文字を含めません。
「-c」は、少なくとも1個の大文字を含めます。
「-n」は、少なくとも1個の数字を含めないという指定になります。
$ pwgen -B -c -n 15 1
生成されたパスワードを、config/database.ymlのproductionに設定して、Gitにコミットします。
今回は、これまで!
次回は、今後開発するにあたって、便利なgemをインストールしたいと思います。
前回の記事は、「Amazon Linuxに、Ruby + Railsのインストールをしよう!」
次の記事は、「Rails開発で便利なGemを選ぼう!」
Ruby on Rails が学べるオンライン講座
オンライン講座なら、好きな場所で好きな時間に学習できます。Ruby on Rails も学ぶことができるので、ぜひ、活用しましょう。
Udemy(ユーデミー)
オンライン動画学習サイトで、Ruby on Rails講座やRuby講座もあります。頻繁に講座のバーゲンセールスが実施されているので、価格をチェックしましょう!一度、購入した動画は繰り返し使えますので何度でも学習可!
世界最大級のオンライン学習サイトUdemy
CodeCamp(コードキャンプ)
現役のRubyエンジニアによる個別指導で、Webサイト制作を基礎から習得できます。無料体験レッスンが受講できるので、気軽に受講体験ができます。
Ruby と Ruby on Railsマスターコース