コジマです。
こちらの続きです。
前回の記事でも書きましたが、Gemfileの使用も覚えたい。と。
【初心者歓迎!】Ruby on Railsもくもく会@新橋
本日はスタテクさん主催のもくもく会に参加し、その成果報告も兼ねています。
Gemfileは調べながら使ってみたいなと思ったものを追加しています。
フロントエンドのGemについてもそのうち追加したいなと思ってます。
#### add gemfiles # for security gem 'dotenv-rails', groups: [:development, :test] # for debug gem 'pry-rails', '~> 0.3.6' # for search gem 'ransack', '~> 1.8', '>= 1.8.8' # for authenticate gem 'devise', '~> 4.4', '>= 4.4.3' # for pagenation gem 'kaminari', '~> 1.1', '>= 1.1.1' # for administration gem 'activeadmin', '~> 1.3'
今回はdotenvとdeviseをやっていきます。
githubのREADMEのリンクも貼っておきます。
(そうすると自分があとで復習しやすい)
dotenv
dotenvはその名の通り.envというファイルを作成して、中身を書くだけで環境変数を設定しておけるgemfileです。
https://github.com/bkeepers/dotenv/blob/master/README.md
私がやりたかったのはsecrets.ymlに記載されている秘密鍵を外出しにしたかったのである!
以前なにも知らずにgithubに上げて「これは上げたらアカンで。」とお叱りを受けました。。。
$ touch .env $ vi .env
を実行し、以下を記入
DEV_KEY_BASE=hogehoge TEST_KEY_BASE=hugahuga
もちろんsecrets.ymlも修正します。(人に見せて大丈夫な形になったし)
development: secret_key_base: <%= ENV["DEV_KEY_BASE"] %> test: secret_key_base: <%= ENV["TEST_KEY_BASE"] %>
ここまでやっても.envをgithubに上げてしまっては元も子もないですね。
.gitignoreしていきます。
# Ignore SecretFile /.env
こんな感じですね。めでたしめでたし。
devise
deviseはユーザー認証機能をサクッと作れちゃう頼もしいGemfile
今回作成する勤怠管理システムではログインしたら出勤、ログアウトしたら退勤という形でやっていきたいと思っているので
追加することにしました。
https://github.com/plataformatec/devise/blob/master/README.md
$ rails generate devise:install Running via Spring preloader in process 14734 create config/initializers/devise.rb create config/locales/devise.en.yml =============================================================================== Some setup you must do manually if you haven't yet: 1. Ensure you have defined default url options in your environments files. Here is an example of default_url_options appropriate for a development environment in config/environments/development.rb: config.action_mailer.default_url_options = { host: 'localhost', port: 3000 } In production, :host should be set to the actual host of your application. 2. Ensure you have defined root_url to *something* in your config/routes.rb. For example: root to: "home#index" 3. Ensure you have flash messages in app/views/layouts/application.html.erb. For example: <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p> 4. You can copy Devise views (for customization) to your app by running: rails g devise:views ===============================================================================
なんかメッセージ出てますね。
簡単に書くと
1.デフォルトのURLオプションを設定してるか確認してね。
2.root_url設定してるか確認してね。
3.flashメッセージをapplication.html.erbに設定してるか確認してね。
4.Viewいじりたいならrails g devise:views 実行してね。
って感じですね。
私は先にrails generate devise Userの実行を先にしてしまいました。
$ rails generate devise User Running via Spring preloader in process 15194 invoke active_record create db/migrate/20180428071219_devise_create_users.rb create app/models/user.rb invoke test_unit create test/models/user_test.rb create test/fixtures/users.yml insert app/models/user.rb route devise_for :users
そしたら順番にやって行きますね。
1.デフォルトのURLオプション
config/environments/development.rbに設定するようですね。
私は仮想OS上でアプリ開発しているので、localhost使うとおかしなことになります。
192.168.33.10というIPを振っているので、それに合わせます。
# adding # for devise config.action_mailer.default_url_options = { host: '192.168.33.10', port: 3000 }
root_urlの設定
config/routes.rbを設定します。
Rails.application.routes.draw do devise_for :users root to: "home#top" # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html end
deviseをgenerateしたときにできたと思われるやつがいますね。
home#topをroot_urlとしました。
3.flashメッセージ
これはほぼ言われていたことをやりました。
<!-- for devise --> <p class="notice"><%= notice %></p> <p class="alert" style="color: red;"><%= alert %></p>
お気持ち程度ですが、エラーメッセージを赤くしましたw
4.viewをいじる
rails g devise:views
これを実行して、viewが作成されたことを確認しましたが、まだ中身をいじっていません。
$ rails g devise:views Running via Spring preloader in process 16932 invoke Devise::Generators::SharedViewsGenerator create app/views/devise/shared create app/views/devise/shared/_links.html.erb invoke form_for create app/views/devise/confirmations create app/views/devise/confirmations/new.html.erb create app/views/devise/passwords create app/views/devise/passwords/edit.html.erb create app/views/devise/passwords/new.html.erb create app/views/devise/registrations create app/views/devise/registrations/edit.html.erb create app/views/devise/registrations/new.html.erb create app/views/devise/sessions create app/views/devise/sessions/new.html.erb create app/views/devise/unlocks create app/views/devise/unlocks/new.html.erb invoke erb create app/views/devise/mailer create app/views/devise/mailer/confirmation_instructions.html.erb create app/views/devise/mailer/email_changed.html.erb create app/views/devise/mailer/password_change.html.erb create app/views/devise/mailer/reset_password_instructions.html.erb create app/views/devise/mailer/unlock_instructions.html.erb
一応ここまで動作を確認できました。
メンテナンスしていきたいです。
deviseを導入する段階でちょっとつまずいてしまったことがあったので、
そこは別の記事で書いていきたいと思います。
今回の成果はここまで。
以上、コジマでした。
コメントを書く