Web業界未経験からエンジニアになる人のブログ

web業界未経験からエンジニアになる人のブログ

ご訪問ありがとうございます!

heroku run rake db:migrate時のMysql2::Error::ConnectionError

こんにちは!kossyです!



ヤフーニュースで気になる記事を見つけました。
headlines.yahoo.co.jp

「クレカ払いは手数料率高いしすぐに手元に現金入らなくて経営苦しくなるしまじでいいことなくね?
いくらキャッシュレス社会って言ってもウチは時代の流れ乗るの無理だわ」

要約するとこんな感じですかね。
キャッシュレスに対応できない飲食店が今後どうなっていくのかは注目に値すると思います。





さて、今回は自分でブログに残したはずなのに、herokuへのデプロイでハマるという愚行を冒してしまったので、
ブログに残しておこうと思います。

遭遇したエラーはこちら

Mysql2::Error::ConnectionError: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)



エラーに遭遇するまでの経緯は、
前のエントリ
やさしいherokuへのデプロイ手順 - web業界未経験からエンジニアになる人のブログ
で言うと、

2. ターミナルで作成したいディレクトリまでcdで移動

3. あらかじめgithubに全てコミットしておく(create時にherokuもoriginもパスが作成される)

4. heroku create アプリ名(先頭の文字を大文字にするとエラーになるよ!)

5. git remote -v でheroku(fetch)~, heroku(push)~, origin(fetch)~, origin(push)~, になってるか確認

ここまでやりました。しかし、

6. heroku addons:add cleardb

7. heroku config | grep CLEARDB_DATABASE_URLでmysqlのバージョンを確認

8. 自分のアプリのmysqlのバージョンを確認して(gemで確認できる)、違っていたら9へ。あってれば10へ

9. heroku config:set DATABASE_URL='mysql2://~'(カンマ忘れるとターミナル止まる)

この手順をすっ飛ばして、

10. git push heroku master

11. heroku run rake db:migrate

10,11の手順を実行したためにエラーが起きてしまいました、、、(1時間はハマりました)



エラーの原因に気づいたあとは、
6-9の手順を順番通り実行し、10,11をもう一度実行しました。
そしてheroku openで無事問題なくアプリを開けました、、、



初めてブログを書いておいてよかったと思いました。笑
過去の自分に感謝です。

AWSの高額請求から身を守る! 'git-secrets'

こんにちは!kossyです!

金足農業の躍進、すごいですね。秋田県出身の方はもうお祭り騒ぎみたいです。
大阪桐蔭PL学園亡き今、名実ともに高校野球界最強の高校で苦しい戦いになるかと思いますが、
金足ナインに是非勝っていただきたいです。










さて、今回はAWSの認証情報を含んだコードをコミットできないように設定できる、
'git-secrets'の使い方について書いてみたいと思います。








git-secretsとは

git-secretsはAWSが提供しているツールで、認証情報などの秘密にしたい情報を、
誤ってコミットされることを防いでくれます。








Homebrew導入(導入済みの方は読み飛ばしてOK)

インストールにはHomebrewを使いますので、
Homebrewをインストールされていない方は、カレントディレクトリに移動し、

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

こちらのコマンドを実行します。
その後パスワード(ご自身のMacにログインする時のパスワードです)を入力し、
エンターを押すとインストールが始まります。インストール終了後、

brew -v

上記のコマンドでバージョンが表示されればインストールは完了です。
Homebrewをインストールすると、インターネット上から便利なアプリケーションを簡単にインストールしたり、
そのバージョン管理をすることができます。


Homebrewの詳しい説明はこちらをご覧ください。
homebrewとは何者か。仕組みについて調べてみたqiita.com


git-secretsのインストールと適用


brew installでgit-secretsを導入します。
カレントディレクトリに移動し、

brew install git-secrets

コマンドを実行します。
導入が終わったら、設定を適用したいリポジトリにcdコマンドで移動して、git-secretsを有効化します。

$ cd リポジトリ名
リポジトリ名$ git secrets --install

その後、

git secrets --register-aws --global

これで、AWS_secret_key, AWS_access_keyなどのAWS関連の秘密情報を一括で設定することができます。
また、

git secrets --list

このコマンドで、現在のgit-secretsの設定を確認できます。

この設定を行うと、git secrets --installを行なったリポジトリでの
AWSの秘密情報を含んだコミットを行うことができなくなります。

また、以下のコマンドを実行すると、今後作成する全てのリポジトリで、git-secretsの設定を自動で適用できるようになります。

git secrets --install ~/.git-templates/git-secrets
git config --global init.templatedir '~/.git-templates/git-secrets'


これで高額請求から身を守れると思いますが、
万が一このブログを見てこの通り設定して高額請求が来ても、責任を負いかねますのであしからず。

RailsアプリへのBasic認証導入

こんにちは!kossyです!






元々腹痛持ちなのですが、ここ最近その症状が悪化しています。
多分原因はペットボトルのラッパ飲みだと思うので、
今後は控えようかと思います、、、










さて、今回はRailsアプリケーションへのBasic認証の導入方法をブログに残そうかと思います。
Basic認証は、あらかじめ設定してあるパスワードとユーザー名を入力することで、
Webアプリへのアクセスを許可する認証方式です。
Basic認証はセキュリティ上の問題があり、ユーザー名とパスワードが平文で送られるため、漏洩のリスクがあります。
なので、必要最低限のセキュリティ認証だと思ったほうがいいようです。






今回は本番環境での実装方法を以下に示します。


まずはターミナルで環境変数を設定します

$ vim ~/.bash_profile

# 下記を記述

export BASIC_AUTH_USER='任意の文字列'
export BASIC_AUTH_PASSWORD='任意の数列'

$ source ~/.bash_profile

その後、


application_controller.rbに以下のコードを記述

class ApplicationController < ActionController::Base
  before_action :basic_auth, if: :production?
  protect_from_forgery with: :exception

  private

  def production?
    Rails.env.production?
  end

  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
    end
  end
end







production?メソッドは、本番環境ならtrue、そうでないならfalseを返すように、
Rails.env.production?と記述します。そして、before_action :basic_auth の後に、
if: :production?と記述することによって、本番環境のみでbasic_authメソッドが実行されるようになります。

これで本番環境でのみBasic認証を導入できます。

Rails.envメソッドは、

Rails.env.development?
Rails.env.test?
Rails.env.production?
Rails.env.your_custom_environment?



等の使い方をし、
現在のRails環境をチェックすることができます。


ちなみに公式には、
You can check your current Rails environment using nice methods
と記述があり、グーグル翻訳大先生に翻訳させてみると、


[現在のRails環境を素敵な方法でチェックすることができます]


と素敵な翻訳結果を返してくれます。

(手抜きエントリ)クックパッドの研修資料がわかりやすい!

Twitterクックパッドの研修資料がわかりやすいとの投稿があり、 早速拝見しました。

speakerdeck.com


インターネットの仕組みについての概要はこちらの資料を読めば理解できるのではないでしょうか。

railsでログイン後にマイページに遷移する方法

こんにちは!kossyです!






いつもは時事ネタや前振りを書くようにしているのですが、何も思いつかないので、さっさと本題に入ります。




さて、今回はrailsでログイン後にマイページに遷移する方法を見つけたのでブログに残そうと思います!
たしかProgateのUXがそうなってた気がします。

コードは、
application_controller.rbに、

def after_sign_in_path_for(resource) 
   自分で設定したマイページへの_url(resource)
end

例(mypage)_url(resource)とすることで、resourceがユーザー情報を持っているので、
ユーザー固有のマイページに遷移できるようになるとのこと。



参考にさせていただいた記事
ログイン後にマイページに飛ばす:Rails devise - とりあえずnull