DockerでRailsチュートリアル(HelloWorld編)

公開日:2018-11-04
最終更新:2018-12-19
※この記事は外部サイト(https://rikka-rt.hatenablog.jp/entry/2018/...)からのクロス投稿です

前回の続きからです。

前回、Dockerのインストールを行い、Rubyのコンテナを作成しました。
今回はコンテナにRailsをインストールして、HelloWorldのチュートリアル(1.3 最初のアプリケーション)完了まで進めます。

Railsインストール

Railsをインストールしようと思いますが、その前に、前回停止したコンテナを起動します。
手順としては、コマンドで起動するか、Kitematicで起動するかの2パターンありますが、今回はコマンドで起動することにします。

> docker container start [コンテナ名]  

これでコンテナが起動します。確認は前回使った docker container ls ですね。
一覧に表示されているSTATUSが Up xx seconds とかになっていれば大丈夫です。

> docker container ls  

startでの起動直後はコンテナの中に入っていないので、以下のコマンドでコンテナに入ります。
ちなみに、今回は追加で別のbashを起動することになるため、中でexitしてもコンテナが停止しません。
参考:docker exec -itって実際は何をしてるの?【90日目】

> docker container exec -it [コンテナ名] /bin/bash  

コンテナに入ったら、パッケージ更新、Node.jsのインストール(必要らしいです)、Railsのインストールをしていきます。
本来なら別のユーザを作って、sudoするのが正しいのでしょうが、気にせずrootのまま突き進みます。
Railsのバージョンは、チュートリアルに合わせてv5.1.6とします。

# apt update  
# apt install -y nodejs  
# gem install rails -v 5.1.6  

インストールが終わったら確認しましょう。

# rails -v  
Rails 5.1.6  

gemインストール

さて、ホストと共有しているディレクトリに移動して、Railsの環境を作っていきます。
rails new すると、なんか色々ファイルが作られるみたいです。

# cd /var/www  
# rails _5.1.6_ new hello_app  

ホスト側で見ると、ちゃんと共有されています。

次に各種gemのインストールをするため、チュートリアルと同じようにGemfileを修正します。
jquery-railsがGemfileに記載されていないので、追記しました。
また、capybaraとselenium-webdriverがチュートリアルの方にはありませんが、そのまま残しておきました。
(長いため、修正前は省略&コメントは削除しています)

source 'https://rubygems.org'  

git_source(:github) do |repo_name|  
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")  
  "https://github.com/#{repo_name}.git"  
end  

gem 'rails', '5.1.6'  
gem 'puma', '3.9.1'  
gem 'sass-rails', '5.0.6'  
gem 'uglifier', '3.2.0'  

gem 'coffee-rails', '4.2.2'  
gem 'jquery-rails', '4.3.1'  
gem 'turbolinks', '5.0.1'  
gem 'jbuilder', '2.7.0'  

group :development, :test do  
  gem 'sqlite3', '1.3.13'  
  gem 'byebug', '9.0.6', platform: :mri  
  gem 'capybara', '~> 2.13'  
  gem 'selenium-webdriver'  
end  

group :development do  
  gem 'web-console', '3.5.1'  
  gem 'listen', '3.1.5'  
  gem 'spring', '2.0.2'  
  gem 'spring-watcher-listen', '2.0.1'  
end  

gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]  

修正が終わったら、bundle install しましょう。
これで、Gemfileに記載されているgemがインストールされるようです。

# cd hello_app  
# bundle install  

ブラウザアクセス確認

ここまで終わらせると、ローカルWebサーバー? を起動することで、ブラウザからアクセスができるようになるとのことです。

# rails server  

無事に起動していれば、ホスト側でブラウザを立ち上げて「http://localhost:[コンテナ作成時に指定したホスト側ポート]」でアクセスできます。
以下のように表示されていればOKです。

Hello World

まずは、実際にブラウザに表示を返す部分の修正です。ちなみに、私はこの辺から理解が怪しくなり始めています。
対象ファイルは hello_app\app\controllers\application_controller.rb です。

# 修正前  
class ApplicationController < ActionController::Base  
  protect_from_forgery with: :exception  
end  

# 修正後  
class ApplicationController < ActionController::Base  
  protect_from_forgery with: :exception  

  def hello  
    render html: "hello, world!"  
  end  
end  

さらに、ルーティング設定です。Javaでいうと@RequestMapping("/hello")みたいなやつですかね?
対象ファイルは hello_app\config\routes.rb です。

# 修正前  
Rails.application.routes.draw do  
end  

# 修正後  
Rails.application.routes.draw do  
  root 'application#hello'  
end  

これで、ブラウザからアクセスすると上で記載したRailsの初期ページではなく、HelloWorldのhtmlが表示されるようです。ということで、ブラウザをリロード。
リロードして上手くいかない場合は、rails server を一度停止(Ctrl+C で止まります)してから再度 rails server を起動してアクセスしてください。

無事にアクセスできました。今回はここまで。
次回に続きます。

記事が少しでもいいなと思ったらクラップを送ってみよう!
36
+1
アイマスP兼エンジニアの雑記。

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする