islands5 blog

日々起こったことを共有したり、思ったこと、勉強したことを書いていくブログ。普段はRailsやAWSを活用したWeb系の開発をやってます。

社内ツールとherokuの相性は最高だ!

gitを使える人だったら、サーバーの設定をせずにしかも無料で使えちゃうheroku

今年に入り、業務改善のためcsvを特定の形式に変換するためのツールを作ってたりするのですが、ほんとに便利だと関心する。
エンジニアとしてはこのようなプログラマに感謝されるサービスを一度は作りたいなと

簡単認証つき社内ツール作成の際にハマった点のメモを

使用したフレームワーク

ruby2.5.0 => 12月末リリースのバージョンですが、herokuですでに対応済み rails5.1.4

要件

・最低限の認証
・ファイルを選択したら変換される

ベーシック認証

僕はよくnginx側でベーシック認証をかけるのですが、railsのapplication_controllerで設定しました。

http_basic_authenticate_with :name => ENV['USERNAME'], :password => ENV['PASSWORD'] if Rails.env == "production"

をコードに追加して、
herokuアプリケーションに環境変数を登録します。

$ heroku config:set USERNAME=username
$ heroku config:set PASSWORD=password

これでベーシック認証をかけられます。

データベースと接続しないクラスの作成

csvを特定の形式に変換するだけなので、データベースに保存する内容は特にありません。
そのため、modelを作成してロジックを追加するのはちょっと違うな~なんて考えたものだから少しハマった。
しかもRails5のproduction環境でしか発生しないというから皆さん気をつけてください。(既存のサービスをRails4からアップデートする人も気をつけたほうがいいかもです)

最初

config.autoload_paths += %W(#{config.root}/lib)

productionではクラスを読み込んでくれない

config.enable_dependency_loading = true
config.autoload_paths += %W(#{config.root}/lib)

なぜproductionで読み込んでくれないんだ(逆なら焦らないのに)w

Rails5: production環境でのAutoloadの廃止 - Qiita 廃止になるのはいいんだけど、データベースに接続しない系のクラスってみんなどこにまとめてるんだろ

少し気になった小企業のプログラマでした。

ではでは~