Cloud9でRailsプロジェクトを実際に作成する手順の備忘録的なものです。
DBをデフォルト以外に設定しようとすると意外と面倒だったりするので、備忘録的に残したいと思います。
※今回はCloud9を使える前提で進めます。
Cloud9を使えるまでの手順は下記を参照してください
####①Railsプロジェクトのインポート####
下記コマンドを実行するとプロジェクトのテンプレートが作成されます。
$ rails new test
testはプロジェクト名です。
作成の前に今回のプロジェクト用のディレクトリを作成しましょう。
$ mkdir rails_test
$ cd rails_test
ルートパスに作成することをお勧めするので、「cd ..」等のコマンドを使って、ルートに移動しておいてください。
作成後は、作詞したディレクトリまで移動して、プロジェクトをインポートします。
$ rails new project
上記コマンドでrails_test/projectというパス構成ができ、project以下に必要なフォルダ構成が作成されるはずです。
####②DB設定####
DBはデフォルトでsqlite3が入っているため、sqliteを使う場合は、そのままで次に進んでください
今回はMySQLを使うので、設定を入れます。
Gemfileの設定を下記に変更してください
# Use sqlite3 as the database for Active Record
#gem 'sqlite3'
#下記に変更
gem 'mysql2'
この状態で、bundle installを実行するとうまくいくはずが・・・・・
下記エラーが発生
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.
gemのインストールのバージョン違いかと思いましたが、どうやら違うようです。
下記エラーが発生してしまいました。
$ gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'
・
・
・
・
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
調べてみると下記方法で解決するようです。
$ sudo yum install mysql-devel
MySQLのインストールが整ったら、設定ファイルを修正します
config/database.ymlのdevelopmentの設定を以下に修正しました
development:
adapter: mysql2
encoding: utf8
database: rails_test
pool: 5
username: root
password:
host: localhost
今回はローカル環境のみの設定なので、developmentの修正のみを行います。
「database:」は作成するデータベース名、「username:」はユーザー名(今回はローカル環境のみのため、rootユーザーを使ってます)を表記してください
####③Angularの導入####
ここは使わなければとばしてください
Angular.jsを使うときはGemfileに下記の設定を追加してください
gem 'angularjs-rails'
####④インストール####
②、③で行った変更をまとめて追加します
$ bundle install --without production
ローカル環境のみのため、withoutを使っています
Bundle complete! 18 Gemfile dependencies, 79 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
これでプロジェクトに適用できたため、サーバーに接続します
$ sudo service mysqld start
$ rails server -b 0.0.0.0
sqliteのときとは違い、MySQLに接続が必要な所だけ注意してください。
デフォルトのRailsページが表示されたら、成功です!
Gemfileに設定記載すれば、大体インストールしてくれそうですね。
DBの設定ファイルはほかの言語とそこまで違わない印象でした。
ただ、mysql-develに関してはもう少し調べてみようと思いました。