【Ruby】Ruby on Railsでdevise使ってログイン機能を作る
Ruby on Railsでログイン機能を作ります。
何やらとても便利なdeviseというgemがあるそうなのでそれを使用します。
■ deviseをインストールする
vi Gemfile #Gemfileをvimで開く
gem 'devise' #deviseというgemをGemfileに記載する
bundle install #未インストールのgemfileをinstallする
bundle installすると、gemの初期設定に必要な項目が表示されるので
それに沿って初期設定を実施します。
■ deviseの初期設定をする
1.認証URLの設定をする
config/environments/development.rbで下の方のurl_optionsを下記へ編集。
config.action_mailer.default_url_options = { host: 'localhost:3000' }
私はさくらのVPSを使っていたので、 IPアドレス000.00.000.00:3000と記載しました。
2.rootの行き先を指定する/モデルとコントローラーを作る
すでにrootが設定されていれば必要ありませんので、rake routesで確認します。
rake routes #リクエストに対応する行き先を確認する
上記は設定されています。
rootの行き先が設定されて
もし設定されてない場合はroutes.rbへ
root 'home#index' #homeは任意です、この後のCとMは合わせます
を追記ください。
次にコントローラーとモデルを作成します。
rails g controller Home index #規約でControllerの1文字目は大文字
rails g devise home #規約でmodelは小文字
rake db:migrate
3.ログインとサインアップへのリンク設置
indexにログインとサインアップの画面を作成します。
<body>〜</body>の間へ作成ください。
Logged in as <strong><%= current_user.email %></strong>.
<%= link_to "Settings", edit_user_registration_path, :class => "navbar-link" %> |
<%= link_to "Logout", destroy_user_session_path, method: :delete, :class => "navbar-link" %>
<% else %>
<%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link' %> |
<%= link_to "Login", new_user_session_path, :class => 'navbar-link' %>
<% end %>
そして、どのページでもログイン情報が画面に出力するよう、
application.html.erbへ下記を追加します。
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
■起動を確認する
rails server -b 0.0.0.0
サーバーを起動し、localhost:3000へアクセス。
Sign upで自分の任意のアドレスを入力ください。
任意のアドレスにメールが届くので、
Confirm my accountをクリックし認証。
ログイン画面でログインができれば成功です。
ちなみにデータはmodel作成時にできたテーブルで確認できるので
mysqlを立ち上げ、use データベース名 -> select * from テーブル名 \G;により
sign up したデータを確認できます。
メールの認証ができていれば、confirmedの2箇所に
token付与、日時が記載されているはずです。
カスタマイズなどはViewを作成してカスタマイズください。
以上です。
【環境構築】CentOS7にRuby+Railsをインストールする(rbenv使用)
前回VagrantとVirtualBoxを使用した仮想環境が完成したので、
この環境にrubyとrailsを入れていきます。
色々とインストールしたいのでroot権限で行います。
sudo su #root権限へ
yum update #インストール済パッケージで更新できるものを更新する
一通りupdateしておきます。
yum install rubyだと2.0.0という少々古いバージョンしかinstallできなかったので
今回はrbenvというrubyのバージョン管理ツールを使用します。
rbenvを使用するため、必要なgitを先にインストールします。
yum -y install git
gitがインストールできたら、rbenvをcloneして
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
rbenvのプラグイン「ruby-build」もcloneします。
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rbenv単体ではrubyをinstallできません、このプラグインが必要です。
rbenvの公式ドキュメントにも記載がありますが、
rbenv用に以下2行を書きかえ、書き換えた.bash_profileを読み直します。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
これでインストールできるようになったはずです。
インストールできるrubyのバージョンを確認します。
rbenv install --list
いっぱい出てきたら自分の欲しいバージョン名を指定します。
rbenv install -v 2.3.1 #バージョン指定はお好みで変えてください
これで問題ないくinstallできればOKです。
(少し時間がかかりますが、Complete!と出てくるはずです)
もし何か足りないというエラーが出てきたら、
足りないものをyum installして、再度上記コマンドをお試しください。
yum install -y openssl-devel readline-devel zlib-devel #一例です
ここまでできれば、バージョンを確認します。
自分がinstallしたrubyのバージョンが記載されて入ればOKです。
もしバージョンが指定したものになっていない場合は、
rbenv global 2.3.1 #自分の使用したいバージョンを記載
rbenvを使用して、切り替えてください。
OSごとバージョンの切り替えをして問題がなければglobal、
今いる位置限定の場合は globalの箇所をlocalへ変更ください。
Rubyがinstallできたので、最後にRailsもバージョン指定でinstallします。
gem install rails --version="4.2.1" #""内にバージョンを記載
ここまで出てきた単語と関連ある単語を初心者が簡単に整理してみます。
- yum ( 第6章 Yum )
…OSへのソフトウェアの導入と削除、管理などを行うパッケージ管理ツール
LinuxのRedHat系には基本的に搭載されています。 - git ( Git )
...ソースコードのバージョン管理ツールです。 - rbenv ( GitHub - rbenv/rbenv: Groom your app’s Ruby environment )
...rubyのバージョン管理ツール。バージョンの切り替えなどが可能です。
例えばruby2.0.0→2.3.1など。 - ruby-build ( GitHub - rbenv/ruby-build: Compile and install Ruby )
...rbenvを使ってrubyをinstallするためのプラグインです。 - gem ( RubyGems.org | your community gem host )
...rubyのgem形式のライブラリを管理するパッケージ管理システム。
Rubyをinstallすれば標準で搭載しています。
例えばrailsなど、便利なライブラリが沢山あります。 - bundler ( Bundler: The best way to manage a Ruby application's gems )
...gemの1つ。アプリケーションに必要となるGemパッケージの種類やバージョンを管理する。Gemfileを通してbundle installすればたくさんの依存関係を持つgemをうまいこと必要な分だけintstallしてくれるそうです。
【環境構築】Vagrant+VirtualBoxを使ってCentOS7の環境構築する
【環境】Max OSX
【構築する環境】Vagrant+VirtualBox+CentOS7
1.VagrantとVirtualBoxをそれぞれインストールする
Vagrant by HashiCorp
Downloads – Oracle VM VirtualBox
今回は、Macに合わせてインストールしました。
特に編集する必要もないので、次へを押し続けてインストールを完了します。
VagrantがインストールできたかどうかはMacのターミナルを開き、
本コマンドで、下記の返答があればOKです。(2017/7/23現在)
Vagrant 1.9.7
VirtualBoxはインストール後Application内にあります。
これでVagrantとVirtualBoxのインストールは完了です。
2.仮想サーバーを起動・接続する
続いて、ターミナルで操作します。(#部分は説明なので不要です)
vagrant box add centos7.2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
#centos7.2というboxを追加
※vagrant box add [box名] [URL]で指定しています。
box名とURLはA list of base boxes for Vagrant - Vagrantbox.esこちらで取得できます。
インストールには時間がかかります(私の場合は5分程度でした)
完了しました。
このコマンドで初期化した後、
vagrantを起動して、
接続できました。
ターミナルが下記のようなコマンドになっていれば完了です。
初期設定が完了したので、今後は下記コマンドを使います。
vagrant up #起動
vagrant status #状態確認
vagrant halt #停止
vagrant reload #再起動
以上で、環境の構築は完了です。