LoginSignup
0
0

More than 1 year has passed since last update.

自己紹介&Ruby on Rails チュートリアル第1章をやってみて 

Last updated at Posted at 2022-02-06

自己紹介

はじめまして。

  
現在情報系の大学2年生で、とある会社で長期インターンをさせてもらえることになりました。プログラミングに関しては、CやPythonなどの基本を触ったことがある程度で、自分で何かを作るなどは特にやったことがないです。
      
  
一応、大学の授業でCSをやったり、去年応用情報を受けたりはしたので(不合格)、簡単な知識はあります。将来の目標としては、ドイツの大学院を出て、ドイツで働けたらなあとは思っております。

今回はインターン先の方から、「これやっとけば、だいぶいい感じだよ!」と言われたので、Ruby on railsのチュートリアルをやってみたいと思います。

■第1章
Railsチュートリアルの流れとしては、実際にWebアプリケーションを開発する流れのよう。章を追っていくほど、機能を増やした物を作れるそうだ。面白そう。

  
RubyやRailsさらに必要なツールをすべてインストールするには、ベテランであっても苦労するそう。たしかに、自分で何かインストールする時、サイトによりけりで結構困るイメージ。
  

実践していく

Railsのセットアップがやや難し目なようなので、Cloud9を用いて進めていくようだ。

1.3 最初のアプリケーション

手始めにHello Worldを表示するアプリケーションを作るので、専用の「environment」ディレクトリを作る。

$ cd            
$ mkdir environment  
$ cd environment  

その後

$ rails _5.1.6_ new hello_app

を実行し、大量のファイルとディレクトリが出てくる。Webフレームワークを導入しているおかげで。コードが読みやすくなっているそう。
         

1.3.1 Bundler  

上のrails newを実行した時に自動的に実行される。ここではデフォルトのアプリケーションgemを変更してBundlerを再度実行してみる。
gemは実際に使用するバージョンに変更。コードは少し長いので略。

置き換えた後は

$ cd hello_app/
$ bundle install

を実行し、アプリケーションが実行可能になる。

1.3.2 rails server

$ cd ~/environment/hello_app/
$ rails server

でローカルWebサーバーを立ち上げる。
他のタブでコマンド実行ができるようになるので、このコマンドは別タブのターミナルで行った方が良いらしい。

1.3.3 Model-View-Controller (MVC)

MVCモデルとは
Model View Controllerの略
・Railsアプリとの通信の際、ブラウザがWebサーバーにリクエストを送信
・コントローラーがそれを受け取る
・場合によってはビューを生成し、HTMLをブラウザに送り返す
・コントローラーはRubyのオブジェクトである、データベースとの通信担当のモデルと対話する

1.3.4 Hello, world!

$ ls app/controllers/*_controller.rb

でコントローラの確認。
renderメソッドで「hello, world!」というテキストを表示する。

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception

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

またRailsのルーティングファイルの内容に

$ root 'application#hello'

を追加する。

プログラミング初心者は、親の顔より見る「hello,world!!」をデフォルトのページに表示させることができました。(ちょっと手こずったので、対処法は一番下に書いてます。
スクリーンショット 2022-02-06 15.02.57.png

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

実際に動作するRailsアプリを初めて完成させることができたので、ソースコードをバージョン管理下に。

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

Cloud9にはデフォルトで実装されている。systemセットアップを、コンピュータ1台につき1回だけ行います。

$ git config --global user.name "Your Name"
$ git config --global user.email your.email@example.com

*このgit configで設定する名前やメールアドレスは、今後リポジトリ上で一般に公開されるので注意が必要。

次にリポジトリの初期化を行う。そのために、アプリケーションのルートディレクトリに移動する。
hello_appだったら、$ cd ~/enviroment/hello_app で移動しておく。

以下のコードで、新しいリポジトリの初期化を行う。

$ git init

次にgit add -Aを実行し、プロジェクトのファイルをリポジトリに追加。

$ git add -A

このコマンドの実行により、現在のディレクトリにあるファイルがすべて追加される。

ステージング (Staging) という一種の待機用リポジトリに置かれ、コミットを待つ。ステージングの状態を知るために、statusコマンドを使う。

$ git status

リポジトリに反映するために、コミット(commit)する。

$ git commit -m "Initialize repository"

-mフラグを使い、コミットメッセージを指定する。

logコマンドでコミットメッセージの履歴を参照ができる。

$ git log

1.4.2 Gitのメリット

次のコマンドでディレクトリの削除をしてしまった場合

$ rm -rf app/controllers/
$ ls app/controllers/
ls: app/controllers/: No such file or directory

まだコミット (保存) されていないので、簡単に削除前の状態に戻すことができる。

$ git checkout -f
$ git status
# On branch master
nothing to commit (working directory clean)
$ ls app/controllers/
application_controller.rb  concerns/

1.4.3 Bitbucket

BitbucketはGitリポジトリのホスティングと共有に特化したサイト
Githubは公開リポジトリは有料だったが、2019年1月からGitHubの非公開型レポジトリが無料に。

リポジトリをBitbucketにプッシュするメリットは
・ソースコードとその変更履歴のバックアップ
・他の開発者との共同作業の簡単化

Bitbucket を使うためにGitのSSH公開鍵が必要なので、Cloud9のターミナルで次のコマンドを打ってみる。

$ cd
$ cd ~/.ssh
$ ls 

出てこなかったら

$ ssh-keygen
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa): ここにid_rsaと入力

を実行する。

lsコマンドで中身が確認できたら、SSH 公開鍵をコピーしてBitbucketの設定で貼り付けます。

ここからの流れは長いので割愛。。。

1.4.4 ブランチ、編集、コミット、マージ

1.4.3の手順に沿って進めた場合、READMEファイルの内容が自動的に表示されるので、その内容を書き換えていく。

Branch (ブランチ)

ブランチとはリポジトリのコピーのこと。自由に変更や実験を試すことができる。

$ git checkout -b modify-README
$ git branch
  master
* modify-README

ここでは短期間だけ使う一時的なブランチをcheckoutと-bフラグで作成。
またアスタリスクでまたmodify-README ブランチを指している。

Edit (編集)

Cloud9のREADMEを編集する。

Commit (コミット)

変更後のブランチの状態を確認すると、

$ git status
・・・
modified:   README.md
・・・

でREADMEがmodifiedされたことがわかる。

メッセージをつけてコミットする。

$ git commit -a -m "Improve the README file"
Merge (マージ)

ここら辺はうまくできなかったです。modify-READMEブランチの変更内容を反映ができない。。

1.5 デプロイする

頻繁にデプロイすることで、開発サイクルでの問題を早い段階で見つけることができる。

今回はHerokuを使っていく。

PostgreSQLと通信するために pg というgemを入れる。
gemfileに以下のコードを追記。

group :production do
  gem 'pg', '0.20.0'
end

HerokuではSQLiteがサポートされていないので、sqlite3というgemが本番環境に導入されないようにする。

本番用以外のgemをインストールしてGemfile.lockに反映させたあと、コミットする。

$ bundle install --without production
$ git commit -a -m "Update Gemfile for Heroku"

次に、Herokuのアカウントを新規作成して設定する。
続いて、自分のシステムにHerokuコマンドラインクライアントがインストールされているかどうかを確認する。

$ heroku --version

ない場合はインストールしておく。cloud9などのクラウドIDEの場合は以下。

$ source <(curl -sL https://cdn.learnenough.com/heroku_install)

コマンドを入力しHerokuにログイン。Herokuサーバーにサンプルアプリケーションの実行場所を作成します。

$ heroku login --interactive
$ heroku keys:add
$ heroku create
1.5.2 Herokuにデプロイする (1)

Gitを使って、Herokuにデプロイします。警告は無視していいそう。

$ git push heroku master
1.5.3 Herokuにデプロイする (2)

一生できなかったので一旦諦めます。。。
中にはやらなくて良いという方もいるので。

チュートリアルの感想

今回この章ではインストール、開発環境の設定、バージョン管理など、色々やりました。文章読んでコマンド見るだけでもWebアプリケーションのことがぼんやりわかって面白かったです。
IDEを使って自分がこんなことできるようになるなんて...
章を重ねていくごとに難しくなっていても頑張ろうと思います

疑問点・単語集

*gem パッケージのこと、名前

*開発環境を大別すると
①IDE(総合開発環境)
②テキストエディタやコマンドラインを使う環境
に分けられる

*デプロイ ITの分野では開発したソフトウェアを実際の運用環境に配置・展開して実用に供することを指す場合が多い。
  

途中

rails server

を実行しても、

A server is already running

と表示されてしまい、非常に困ったので対処法のメモ
・rails sを実行しているターミナルの終了
・killコマンドでの停止 kill プロセスID
psコマンドやlsof -iコマンドでIDは見つけられる

参考サイト:rails server (rails s) できない原因と対処方法【初心者向け】

あと、Bitbucketへのプッシュがうまくいかず

error: src refspec master does not match any. 

のエラーが出て困っていたのですが

$ git commit -m 'First Commit'

でうまくいきました。

参考サイト:Gitでerror: src refspec master does not match anyのエラー

  

0
0
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
0
0