やる気がストロングZERO

やる気のストロングスタイル

Rails

Railsで実装した処理はどうやって実行されるのか

Railsで実装した処理は、どうやって実行されるのかが理解できたのでメモ。 わからなかったこと ブラウザからリクエストが送出され、webサーバ(Nginx等)に到達し、webサーバからAppサーバ(Unicorn等)に流されるのは理解していた。 AppサーバがどうやってR…

activeresource-responseを入れたら既存挙動が変わってバグった

経緯 activeresourceでデータ取得するロジックがあった。 user = User.find(1) data = user.some_data # apiアクセスを実行してデータを取得 dataがnilだったら〜〜という処理があった # data == nilのとき、resultには"データはありませんでした"が入る想定…

railsのrake taskをcron実行する

普通にcrontabでこんな感じで設定したけど動かなかった。 */10 * * * * cd /app && bundle exec rake rake:task RAILS_ENV=production 最終的にはwheneverというgemを使って解決した。 GitHub - javan/whenever: Cron jobs in Ruby なぜ動かん? cron実行の…

rails command の一覧を知りたい

なんかググってもあまりまとまった情報が出てこない(調べ方が悪いのかも。。) 普通にコマンドヘルプを見るのが良かった。 bundle exec rails --help で一覧が表示できる サブコマンドのヘルプを見たいときは以下のようにする。 bundle exec rails db:creat…

【Rails】autoloadについて

app/以下に自分でディレクトリをほってclassを定義したときにどのように呼び出したらいいのかよくわからなかったが、ここに記載されてた。 railsguides.jp app/some_dir/some_class.rb だったら以下の名前でclass定義して class SomeClass ... end 以下の感…

【rails】既存DBの初期migrationファイルの作り方

参考) Rails - schema.rb(既存DBを使ったアプリ作成) - Qiita rails db:schema:dump でschema.rbを生成する マイグレーションファイルにschema.rbの中身をコピペする class CreateTables < ActiveRecord::Migration[5.0] def change # ここにschema.rbの…

【rails】dockerを使ってproductionでの確認ができる環境を構築する設定ファイル郡を作った

インフラ知識詳しくないので、とりあえず最低限動くところまで。 github.com これは何? railsの開発サーバーでの開発と、 dockerを使ってproduction環境での確認ができる環境を構築する設定ファイル郡 バージョン ruby 2.6.3 rails 6 構築方法 railsの新規…

Railsのセットアップ

参考) システムのgemにrailsをインストールせずrails newする - Qiita 手順 ディレクトリ作成 mkdir rails_app ディレクトリ移動 cd rails_app rubyのバージョン決定 rbenv local 2.6.5 bundlerの初期化 bundle init railsインストールの有効化 vim Gemfile…

【Rails】Active Record のコールバックは使わない方がいいと思った

Active Recordのコールバックは便利な事もあるのかもしれないが、注意して使わないとコードの可読性がものすごく落ちていくので使わない方がいいと思った。 Active Record コールバック - Rails ガイド コードリーディングで処理を追うのが難しくなる コール…

ビジネスロジック内でActiveRecordを直接つかいたくない

ActiveRecordのような、データベースとやり取りするライブラリをビジネスロジック内で直接使いたくない、とか思ってしまう。 なぜ? ビジネスロジック内で直接ActiveRecordを使うとAcriveRecordに依存したコードになってしまう。 ビジネスロジック的にはデー…

ModelにApplicationが提供する機能を実装するとつらくなる

どういうこと? railsを例にとるが例えばアカウント登録機能を実装するとする。 アカウント登録が行われたらユーザーに完了メールが飛ぶという仕様。 コントローラーに処理を書くのは良くないので、Modelに実装された。 save()が実行されるとメールが飛ぶよ…

【activerecord】joins, includes, eager_load, preloadの違い

joins, includes, eager_load, preloadはよく似た状況を作り出すがいまいち理解し切れなかったので整理。 参考) ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita N+1問題を回避し、かつ、、 where条件に関連テーブルのカラムを使いたい…

【Rails】ブラウザ実行自動テスト設定方法

railsでブラウザ実行のテストの自動化をどうやるのか調べた。 結構把握に時間がかかったのでメモ。 前提知識整理 個人的認識なのでもしかしたら間違っているかも。 ◆Rspec railsでテストを書く際のインターフェース定義的なもの? 英語の文章のようにテスト…

【Rails】migrationコマンド周りまとめ

参考)Active Record マイグレーション - Rails ガイド $ bin/rails db:migrate 最新状態までマイグレートする $ bin/rails db:migrate VERSION=20080906120000 指定のバージョンまでマイグレートする $ bin/rails db:rollback 一つ前に戻す $ bin/rails db:…

【ActiveRecord】テーブルをまたいでwhere句条件を書きたい時

こういうsqlをActiveRecordを使って表現したい SELECT * FROM posts INNER JOIN comments ON comments.post_id = posts.id WHERE comments.created_at >= '2019-01-01' つまり、2019年以降にコメントがついたpostのデータを取得したい。 こう書いたらできた …

【rails】コード読んだメモ

rubyのコードリーディングの練習でrailsのコードを少し読んだのでメモ railsでのautoloadについて railsではActiveSupportというmoduleが使われていて、色々便利な機能を提供してくれているらしい。 その一つにActiveSupport::Autoloadがあって、これをexten…

【Rails】 Capybaraの使い方メモ

参考) https://www.rubydoc.info/github/jnicklas/capybara/Capybara https://github.com/teamcapybara/capybara https://qiita.com/morrr/items/0e24251c049180218db4 railsへのインストール Gemfilesへ追記し、bundle installでインストールする。 rails …

【Rails】RSpecの使い方メモ

参考: GitHub - rspec/rspec-rails: RSpec for Rails-3+ RSpec Expectations 3.8 - RSpec Expectations - RSpec - Relish インストール Gemfileに追記 # Run against the latest stable release group :development, :test do gem 'rspec-rails', '~> 3.8' …

Railsの開発環境とステージング環境をDockerを使って構築したのでメモ

Railsの開発環境とステージング環境をDockerを使って構築してみた。 注意:Docker周りインフラ周りについてエキスパートではないので本当にこれが要求を満たせているのかは不明 ディレクトリ構成 . ├── app │ ├── Dockerfile # webサーバー構築用 │ ├── conf…