Ruby on Rails チュートリアル:最初のアプリをGitHubにpushするまで

今更ですが、Ruby on Rails チュートリアルをやってます。
http://railstutorial.jp/

Ruby on Rails ガイド (4.2 対応)というのもあります。
http://railsguides.jp/

これからRailsを学び始める場合はRailsチュートリアル:実例を使ってRailsを学ぼうが役に立ちます。本ガイドを副読本として参考にしつつ、Railsチュートリアルから読み進めることをオススメします。
だそうです。

チュートリアルを一通りやったらガイドのほうもやってみようと思います。

まずはチュートリアルを順番にインストールして最初のアプリを初期化してGitHubにpushするところまで
環境はWindows7にインストールしたVMWare上でUbuntuで行います。

第1章
ゼロからデプロイまで

1.1 はじめに ~ 1.1.3 この本における取り決め
一通り読みます

1.2.1 開発環境
IDEはRuby Mineを使用することにしました。
仕事でPHPStorm使ってるので同じような環境がいいだろうと

1.2.2 Ruby、RubyGems、Rails、Git
ドキュメントにバージョンを合わせます。
Ruby: 2.0.0
Ruby on Rails: 4.0.5

●RVMのインストール
Rubyのインストールの前にRVMをインストールする
$ curl -L https://get.rvm.io | bash -s

プログラム 'curl' はまだインストールされていません。 次のように入力することでインストールできます:
sudo apt-get install curl

curlも入ってなかったか
$ sudo apt-get install curl
でインストールします。
再実行
$ curl -L https://get.rvm.io | bash -s

$ which rvm
/home/oono/.rvm/bin/rvm

rvmがインストールされました。

●Rubyインストールのための要件チェック
$ rvm requirements
Checking requirements for ubuntu.
Installing requirements for ubuntu.
Updating systemoono password required for 'apt-get --quiet --yes update':
.............
Installing required packages: gawk, g++, libreadline6-dev, zlib1g-dev, libssl-dev, libyaml-dev, libsqlite3-dev, sqlite3, autoconf, libgdbm-dev, libncurses5-dev, automake, libtool, bison, libffi-dev..................
Requirements installation successful.

必要なライブラリがインストールされました。

●Rubyのインストール
バージョンを指定してインストールします
$ rvm install 2.0.0


Install of ruby-2.0.0-p645 - #complete

Ruby 2.0.0 p645がインストールされました。

●gemsetの作成
$ rvm use 2.0.0@railstutorial_rails_4_0 --create --default

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for an example.

何かエラーになりました。ググると.bashrcに設定を追加すればいいらしい
source "$HOME/.rvm/scripts/rvm"
を最後に追加して

$ source .bashrc
もう一度
$ rvm use 2.0.0@railstutorial_rails_4_0 --create --default
ruby-2.0.0-p645 - #gemset created /home/oono/.rvm/gems/ruby-2.0.0-p645@railstutorial_rails_4_0
ruby-2.0.0-p645 - #generating railstutorial_rails_4_0 wrappers..........
Using /home/oono/.rvm/gems/ruby-2.0.0-p645 with gemset railstutorial_rails_4_0

$ which ruby
/home/oono/.rvm/rubies/ruby-2.0.0-p645/bin/ruby

$ ruby -v
ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-linux]

$ which gem
/home/oono/.rvm/rubies/ruby-2.0.0-p645/bin/gem

問題なさそうです。

●gem設定ファイルを作成する
viでgem設定ファイルを作成します

$ vi ~/.gemrc
install: --no-rdoc --no-ri
update: --no-rdoc --no-ri

●Ruby on railsをインストール
$ gem install rails --version 4.0.5

$ rails -v
Rails 4.0.5

とりあえずインストールは完了

1.2.3 最初のアプリケーション
Hello Worldというか最初のアプリケーションを作ってみます

ディレクトリを作って
$ mkdir rails_project
$ cd rails_project/

バージョン指定して新しいアプリケーションの雛形を作ります
$ rails _4.0.5_ new first_app
:
:
run bundle install
:
Bundle complete! 9 Gemfile dependencies, 43 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

問題なく新しいアプリが作成されたようです。

1.2.4 Bundler
first_ap/Gemfileをドキュメントにしたがって編集します。

$ bundle update
$ bundle install

で必要なGemをインストールします。

1.2.5 rails server

$ rails server
/home/oono/.rvm/gems/ruby-2.0.0-p645@railstutorial_rails_4_0/gems/execjs-2.5.2/lib/execjs/runtimes.rb:48:in `autodetect': Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

ローカルWebサーバ起動しましたが、Could not find a JavaScript runtimeというエラーに

Gemfileの以下のコメントを外します
# gem 'therubyracer', platforms: :ruby

再度Gemをインストールして
$ bundle install

$ rails server
=> Booting WEBrick
=> Rails 4.0.5 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-04-14 18:43:43] INFO WEBrick 1.3.1
[2015-04-14 18:43:43] INFO ruby 2.0.0 (2015-04-13) [x86_64-linux]
[2015-04-14 18:43:43] INFO WEBrick::HTTPServer#start: pid=27312 port=3000

今度は正常に起動します

1.2.6 Model-View-Controller (MVC)
一通り読んでおきます

1.3 Gitによるバージョン管理

1.3.1 インストールとセットアップ

$ sudo apt-get install git
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
git-man liberror-perl
提案パッケージ:
git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk
gitweb git-arch git-bzr git-cvs git-mediawiki git-svn
以下のパッケージが新たにインストールされます:
git git-man liberror-perl

必要なパッケージも追加されます

$ which git
/usr/bin/git
$ git --version
git version 1.9.1

●最初のシステムセットアップ
$ git config --global user.name "あなたの名前"
$ git config --global user.email your.email@example.com

●コミットメッセージ用のエディタの設定
とりあえずviで
$ git config --global core.editor "vi"

●最初のリポジトリセットアップ
アプリのトップディレクトリに移動して
$ git init
Initialized empty Git repository in /home/oono/rails_project/first_app/.git/

$ ls .git
HEAD branches config description hooks info objects refs
必要なディレクトリが出来てますね

●.gitignoreファイルの追記
とりあえず*~だけ追記しました。
この辺は環境とかエディタなんかによってGITで管理して欲しくないファイルを追記する感じですね

1.3.2 追加とコミット

$ git add .
. はカレントディレクトリ以下の全部のファイルって意味ですね
このコマンドにより対象のファイルがステージエリアに格納されました。
ステージエリアの状態は以下のコマンドで確認できます
$ git status

ステージングエリアにある対象をコミットします。
$ git commit -m "Initialize repository"

-mを省略すると先ほど設定したエディタが起動してコミットログを書けます。
確認も含めて、あえてエディタを起動してみます。

$ git commit
viが起動して
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
と表示されるので先頭でInitialize repositoryと入力してESC :wq
で終了。

確認してみます
$ git log
commit 24d5ac5b0b12e6f60d0a1de436ce999f85a64945
Author: oono
Date: Fri Apr 17 23:25:15 2015 +0900

Initialize repository

1.3.3 Gitのメリット
初期状態がコミットできたところで、ディレクトリを手動で削除してから復活の呪文を唱えてみます。

$ ls app/controllers/
application_controller.rb concerns
$ rm -rf app/controllers/
$ ls app/controllers/
ls: app/controllers/ にアクセスできません: そのようなファイルやディレクトリはありません

確認
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)

deleted: app/controllers/application_controller.rb
deleted: app/controllers/concerns/.keep

no changes added to commit (use "git add" and/or "git commit -a")

復活の呪文で元に戻します。強制checkoutで現在の作業ツリーの状態を破棄して上書きするわけですね
$ git checkout -f
$ git status
On branch master
nothing to commit, working directory clean

確認、ちゃんと元に戻ってますね
$ ls app/controllers/
application_controller.rb concerns

1.3.4 GitHub
GitHubを使ってソースコードのバックアップ及び多人数間でのシェアが出来るようにします。
GitHubのアカウントはあるのでSSHを使ったログインが出来るようにします。

https://help.github.com/articles/generating-ssh-keys/
ここにしたがって作業します。

Step 1: Check for SSH keys
$ ls -al ~/.ssh
ls: /home/oono/.ssh にアクセスできません: そのようなファイルやディレクトリはありません
ないのでディレクトリ作成します
$ mkdir ~/.ssh

Step 2: Generate a new SSH key
$ cd .ssh
$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oono/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oono/.ssh/id_rsa.
Your public key has been saved in /home/oono/.ssh/id_rsa.pub.
The key fingerprint is:
f3:f5:2a:1b:bd:57:a5:9c:01:10:7c:13:71:1f:b6:74 daye001@gmail.com
The key's randomart image is:
+--[ RSA 2048]----+
| .oooo.+E|
| . +.o.+|
| . o ..|
| . .|
| S .. +.|
| o o .+ .|
| o . .. |
| .. o. |
| .oo. |
+-----------------+

id_rsa: 秘密鍵
id_rsa.pub: 公開鍵
が作成されます。

Step 3: Add your key to the ssh-agent
$ eval "$(ssh-agent -s)"
Agent pid 38063

ssh-agentに秘密鍵を追加します
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/oono/.ssh/id_rsa:
Identity added: /home/oono/.ssh/id_rsa (/home/oono/.ssh/id_rsa)

ssh-agentについては以下が詳しいです
http://qiita.com/isaoshimizu/items/84ac5a0b1d42b9d355cf

Step 4: Add your SSH key to your account
xclipをインストールします
$ sudo apt-get install xclip

$ xclip -sel clip < ~/.ssh/id_rsa.pub
クリップボードに公開鍵をコピーします。

GitHubにログインします
歯車のアイコンをチェックします
左のメニューの「SSH Keys」をクリックします。

Add SSH keyボタンを押します。

Title: 識別するための名前を入力します

Key: マウスを右クリックしてクリップボードから公開鍵を張り付けます

Add keyを押して保存します

Step 5: Test the connection

$ ssh -T git@github.com
The authenticity of host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
yesを入力してエンターキーを押します

Warning: Permanently added 'github.com,192.30.252.129' (RSA) to the list of known hosts.
Hi pakuqi! You've successfully authenticated, but GitHub does not provide shell access.

と表示されましたので問題なくSSHでアクセスできてます。

●GitHub上にリポジトリを作成
ログイン後、+アイコンを押して、New Repositoryをクリックします。

Repository nameにfirst_app
Descriptionに識別しやすい説明を書いておきます
Initialize this repository with a READMEはチェックしないようにします。

Create Repositoryボタンを押して作成します。

終わったらローカルのリポジトリをGitHubにプッシュします
ここで何してるかは以下のURLを見るとよく分かります。
http://dqn.sakusakutto.jp/2011/10/git_push_origin_master.html

新しいリモート Git リポジトリにアクセスしやすいような名前をつけて追加するには、git remote add [shortname] [url] を実行します。
shortnameは習慣としてoriginを指定するようですね。
これで新しいリモート Git リポジトリにoriginという名前でアクセスできるようになりました。
$ git remote add origin https://github.com//first_app.git

リモートへのプッシュは、git push [remote-name] [branch-name]を実行します。
-uオプションについてはgit set upstreamでぐぐってみました。
http://usualoma.hatenablog.com/entry/20110214/1297644592
pullやpushのデフォルトの対象になるということは、省略できるのかな?

$ git push -u origin master
Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
Counting objects: 60, done.
Compressing objects: 100% (49/49), done.
Writing objects: 100% (60/60), 14.38 KiB | 0 bytes/s, done.
Total 60 (delta 2), reused 0 (delta 0)
To git@github.com:pakuqi/first_app.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.

Web上でGitHubに作成したリモートリポジトリにfirst_appがpushされていることを確認します。

これでローカルのGitリポジトリ、GitHub上にバックアップ兼共有用のリモートリポジトリが作成されました。

今後はチュートリアルにしたがって作業していきます。







ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック