本文へスキップ

タグ

Rails

11件の記事

Railsでワンタイムパスワードによる認証を行うGemを作りました

Railsでワンタイムパスワードによる認証を行うone_time_passwordというGemを作りました。4桁や6桁の数字の認証コードを入力して認証するあれです。 近い道としては「2段階認証」や「新規会員登録時のメール認証でアカウントを有効化すること」などを想定してます。新規会員登録の時に認証URLをメールで送ってアクセスしてもらうタイプが多いと思うのですが、この方式だとモバイルアプリの時にアカウントを有効化した後に再度ログインしてもらうなどしてもらわないといけなくて不便ですよね。 ワンタイムパスワード方式ならそのあたりの実装をシンプルにできます。

Rails.cache.fetch で有効期限が効かずにキャッシュが更新されない

Rails.cache.fetchを使っていた時、有効期限を短くしてるにもかかわらず古い値が残り続けるという現象が起きました。Rails.cache.fetchのexpired_inは5秒と設定して、5秒以上たってもキャッシュが消えませんでした。Rails自体のソースコードを読んでみると、Entryクラスのinitializeメソッドの引数に指定できるのはexpires_inまたはexpires_atとなっています。そう、expired_inという引数は存在せず指定できなかったのです。僕が参考にしたサイトが間違っていたのが原因というオチでした。

Github ActionsでRailsがDBと接続できなかった話

Github Actions でCIの設定を書いていて 'could not connect to server: Connection refused | Is the server running on host "localhost" (::1) and accepting |TCP/IP connections on port 5432?' や 'could not translate host name "postgres" to address: Name or service not known | Couldn't create 'app_test' database. Please check your configuration.' のようなエラーが出ていて数日困り果てていました。結果的にactではサービスコンテナが使えないというのが原因でした。僕はあまりDockerなどのコンテナ周りが専門ではないので、Rubyやpostgresのバージョンの問題なのか?何か書き方が間違っているのか?Portやhostの設定が違うのかと迷走してしまいました。

Ruby on Railsで Refused to load the script http://localhost:3000/mini-profiler-resources/includes.js というエラーが出る対処

Ruby on RailsでJavascriptを読み込もうとして時に、 Refused to load the script 'http://localhost:3000/mini-profiler-resources/includes.js?v=35a79b300ab5afa978cb59af0b05e059' because it violates the following Content Security Policy directive: "script-src 'unsafe-inline'". Note that 'script-src-elem' was not explicitly set, so 'script-src' is used as a fallback. ようなエラーが出ました。コマンドでtmp/miniprofilerフォルダ以下を削除することで解決します。Permission deniedが出て権限エラーになるときはsudoをつけて削除しましょう。

WSL2でdocker-compose runコマンドで生成されたファイルの更新ができない

WSL2 上で docker-compose run app bundle exec rails new . コマンドによってファイルを生成したとき、ファイルの編集ができなかったり、git add したときに .git/index.lock ファイルで Permission denied が出たりしていました。WSL特有の症状なのかと悩んでいたのですが、 docker-compose run app bundle exec rails new . コマンドのようにコンテナ内からコマンドを実行してファイルを生成すると所有者が root になることが原因のようでした。生成されたファイルをchownでパーミッション変更するか、WSLに直接Rubyをインストールしてコンテナ外からファイルを生成するのがよさそうです。 wsl.conf や .wslconfig の編集、ubuntu2004コマンドは関係なしでした。

Ruby on Rails で超初心者を脱するまでに学んだこと6つ

ペパボに入社して初めてRailsに触れて、実務でRailsを書き始めて1年が過ぎました。そんな日々で自身がやってしまったバッドメソッドをまとめておこうと思います。レビューなどで指摘されないと意外とやってしまうものもあるかもしれません。これをやめればコードの質も上がると思います。 モデルに寄せてコントローラーに処理を詰め込みすぎない、テストを書く、大事なRakeタスクはlib以下に処理を書いてテストを書く、Rspecで1つのitの中にexpectは1つ、テストでprivateメソッドを覗かない、テストからセッションを覗いたり、変更している時点で設計的に良くない可能性が高い、の6つです。

GitHub ActionsでRails+Rspec+docker-compose環境のci構築

Githubで開発を進める中で、多くのプロジェクトはPushしたときか、何かしらのタイミングでテストを実行していると思います。 DroneCIなど様々なツールがありますが、めんどくさがり屋の僕としては簡単に導入できそうなGithub Actionsを使ってCIを導入していこうと思います。 Docker-composeと組み合わせることでかなりすっきり簡単に構築できました。

Docker環境でRspecをインストールする

Windowsで Docker を用いて Rails 6.0 + MySQL の環境構築の続きです。前回はテストを入れずにRails環境を構築したので、今回はテストフレームワークとしてRspecを入れます。Bundler::GemNotFoundエラーの対処方法も書いてます。