□BASSIC認証導入の流れ(開発環境)

◎BASSIC認証とは

・Webアプリケーションへアクセスする時点でユーザー情報の入力を求める方法

 

◎BASSIC認証導入までの流れ(開発環境)

1 [VScode] app/controllers/application_controller.rb

___________________________________

~

before_action :basic_auth

 

private

 

def basic_auth

  authenticate_or_request_with_http_basic do |username, password|

    username == 'admin' && password == '1234'

  end

end

~

___________________________________

 

このままでは、コード内でユーザー名・パスワードが読み取られてしまいます。

不正アクセスされてしまう危険性があるので

ユーザー名・パスワードをzshというファイルに記述し、コードを見ただけでは読み取れないようにします。

 

2 [ターミナル]

___________________________________

% vim ~/.zshrc

___________________________________

 

「i」を推してINSERTモードにする

___________________________________

export BASIC_AUTH_USER = 'admin'

export BASIC_AUTH_PASSWORD = '1234'

___________________________________

「esc」を推して「:wq」と入力し「enter」を押す

___________________________________

% source ~/.zshrc

___________________________________

 ※~/.zshrc の . を忘れがち 

 

3 [VScode] app/controllers/application_controller.rb

___________________________________

  authenticate_or_request_with_http_basic do |username, password|

    username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"] 

  end

___________________________________

 

 

以上で開発環境におけるBASSIC認証導入可能

loopメソッド

◎挙動

特定の処理がなされるまで繰り返しを行う

 

◎記述方法

____________________________________

loop do

// 繰り返しを行う処理

end

____________________________________

 

◎実例 支払額が購入額を超えるまで繰り返し入力させる方法

____________________________________

loop do

  puts"支払い額を入力してください"

  inp = gets.to_i

  if inp > total_price

     puts "#{inp - total_price}円のお返しです。"

     break

  elsif inp == total_price

     puts "ちょうどいただきました。ありがとうございます。"

     break

  else

     puts "お支払い金額が足りません。もう一度お支払額を入力してください。"

  end

end

____________________________________

支払額 ≧ 購入額の場合はbreakで処理を終了させる。

支払額 < 購入額の場合はloopで支払額入力処理を繰り返させる。

ユーザー登録時に入力してもらう値を追加する方法

※メールアドレスとパスワードについてはdeviseの導入時にデフォルトで実装されているものとする

※今回はユーザー名を追加で登録するものとする

 

1)マイグレーションファイルの修正

・【ターミナル】rails db:rollback を実行

・【VScode

-----db/migrate/2023xxxxxx~_users.rbファイル内-----

 t.string :username

--------------------------------------------------------------

 を追記

・【ターミナル】rails db:migrate を実行

 

2)新規登録画面の編集

・【VScode

-----app/views/devise/registrations/new.html.erbファイル内-----

<div class = "field">

  <%= f.label :"ユーザー名" %><br />

  <%= f.text_field :username %>

</div>

---------------------------------------------------

 

3)バリデーションの設定(必要に応じて)

・バリデーションとは指定したカラムが空だとエラーにする設定

・【VScode

-----app/controllers/application_controller.rbファイル内-----

validates :username, presence:true

------------------------------------------------

を追記

 

4)コントローラーの修正

・deviseがデフォルトで持っている値以外のデータを保存するときに必要

・【VScode

------------app/controllers/application_controller.rbファイル内------------

before_action :configure_permitted_parameters, if: :devise_controller?

 

private

def configure_permitted_parameters

  devise_parameter_sanitizer.permit(:sign_up, keys:[:username])

end

-----------------------------------------------------------

を追記

 

5)ログインしているユーザー名を表示させる

・【VScode

-----app/views/~/index.html.erbファイル内-----

<%= "#{current_user :username}さん"%> 

// ログインしているユーザー名を表示

--------------------------------------

ログイン機能実装までのステップ

1)Gemの導入

・【VScode】 gemfile内にgem 'devise'と記入

・【ターミナル】bundle installを実行

 

2)’device’のインストール

・【ターミナル】rails g devise:installを実行

 

3)モデルの作成

・【ターミナル】rails g devise userを実行

 

4)テーブルの作成

・【ターミナル】rails db:migrate を実行

 

5)新規登録とログインのためのリンク作成

・【VScode】 link_toタグを設定

・【ターミナル】rails routs でルートを検索しておく

・新規登録:registraions#newタグのパスを検索

→【VScode<%= link_to "新規登録", new_user_registration_path %>を記述

・ログイン:sessions#newタグのパスを検索

→【VScode<%= link_to "ログイン", new_user_session_path %>を記述

 

6)新規登録とログインのためのビューファイルを作成

・【ターミナル】rails g device:viewsを実行

・新規登録のビュー 【VScode】app/devise/registrations/new.html.erb に記述

・ログインのビュー 【VScode】app/devise/sessions/new.html.erb に記述

 

7)ログインしている時としていない時とでビューファイルを変更

・ログインしている時はログアウトボタンを表示する

・ログアウト:session#destroyタグのパスを検索

→【VScode<%= link_to "ログアウト", destroy_user_session_path, method: :destory %>を記述

・<if user_signed_in?>メソッドを使用しログインの可否で表示させるビューを分岐させるコードを記述

<if user_signed_in?>

#ログインしている時に表示させる情報 ※ログアウトボタンを表示

<else>

#ログインしていない時に表示させる情報 ※新規登録・ログインボタンの表示

<end>

曜日の取得方法2選

◎wday
・DateクラスやTimeクラスで提供されるメソッドで、曜日を表す数値を取得するために使用されます。
・曜日を表す数値とは0(日曜日)〜6(土曜日)です
・実例
today = Time.new

week = ["日","月","火","水","木","金","土"] 
puts week[now.wday] + '曜日です' // 今日の曜日を出力
 
◎strftimeメソッド
Date.todayメソッドを使用して現在の日付を取得し、strftimeメソッドを使用して"%A"フォーマットを指定します。
"%A"は、曜日を表示するための指定子です。ただし英語表記になります。
・実例
require 'date'

today = Date.today
weekday = today.strftime("%A")
puts weekday //今日の曜日を英語表記で出力

僕がプログラミングを学ぶ理由

どうも初めまして、こーへーです。

ただいま仕事と育児の合間を縫ってプログラミンの猛勉強中です。

 

今回は、軽く自己紹介を含め僕がプログラミングを勉強する理由を紹介していきたいと思います。

 

自己紹介

出身:大分県

誕生:1994年

現状:3児の子育て奮闘中パパ。プログラミングを猛勉強中。

 

僕がプログラミングを勉強する理由

  1. 自分の市場価値を上げるため
  2. IT業界が成長産業だから
  3. 自由でかっこいいから

 

それぞれもうちょっと深掘りしたいと思います。

 

「1.自分の市場価値を上げるため」

仕事しながら、常に思うことがあります。それは「この仕事を辞めた時、自分はどうやって稼げばいいのだろう。」という不安です。

今の自分がお給料をもらえているのは、会社という看板を背をっているからであり、それがなくなった時、僕個人の市場価値はゼロなのではないか。どうやってお金を稼ぎ、どうやって家族を守っていけばいいのか。という漠然とした不安が常に僕の隣にいます。

この不安の解決方法として、プログラミングを学習して自分の市場価値を高めようと思いました。

 

「2.IT業界が成長産業だから」

市場のニーズを把握するために、たまに転職サイトを見ています。そこでよく目に飛び込んでくるのは「エンジニア・SE・プログラミング開発」などなどIT業界関連ワードの数々。市場もプログラミングができる人を求めていることは間違いないみたいです。

であるならプログラミングスキルを身につけておけば、市場価値は高まるに違いないと思っています。

 

「3.かっこよくて自由だから」

プログラミングスキルを身につけてパソコン1台でサービスをクリエイトする人たちを「かっこいいな」と思っています。一般人には理解不能なコードを読み解いたり、世界的大富豪にもプログラマー社長がたくさんいるため、「プログラマー=インテリかつ高収入」というイメージを持っています。

そして、パソコン1台あれば、大都会でもど田舎でも遜色なく仕事ができ、時間や場所にとらわれず働ける環境があるため「移住で住む場所を変えたい。子育て中のため働く時間に融通を効かせたい。」と思っている僕には理想的なスキルかな思っています。

 

以上、僕がプログラミングを学ぶ理由です。

 

現在、僕はテックキャンプに入学しプログラミングの学習をしています。

めちゃくちゃハードですがなんとか第一関門の基礎試験を突破し、現在応用学習中です。

プログラミングスキルは一朝一夕で身につくスキルではないので、学習習慣を身につけ勉強を続けていくことこそが唯一の道だと思っています。なかでもテックキャンプは未経験からエンジニアを育成する学習環境に重点をおいており、専属のライフコーチと週1で学習状況を確認しあえますし、メンターにも質問し放題で、挫折しにくい環境を作ってくれます。

 

今後は、プログラミングについて学んだ内容や思ったことなどをこのブログでアウトプットしていきたいと思います。

私のプログラマーとしての成長の過程を綴っていきますので、少しでもお役に立てば幸いです。

 

ここまで、お読みいただいて本当にありがとございました。

では、また👋