Rails
Railsでファイル操作するとき Railsでファイル操作するときはDir.children(Ruby2.5以上で利用可能)ではなくrails.root.joinを利用する方が良い。 Dir.children実行時ファイルからの相対pathで取得してしまうので、実行箇所によって動かなくなるケースが稀…
クラス/インスタンスメソッドの使い分け方法 railsのモデルファイルを書いていて間違えやすいのが、クラス/インスタンスメソッドの使い分けです。 先に結論 データすべて(モデルそのもの)に対する操作はクラスメソッド。特定のデータに対する操作はインスタ…
rails new git 管理外れる場合の対象方法 rails newで作成したアプリケーションのディレクトリに移行してみると、git initのコマンドを打ち込んでいないのにも関わらずgitの管理が始まってします。 このときの対処方法を記載する 例)こんな現象 [/Users/use…
Rails設計パターン Railsの設計パターンについて、殴り描きします MVCパターン RailsTutorialから入った自分には一番馴染みの設計パターン ルーティング(Routes)→コントローラー(Controller)→モデル(Model)→ビュー(View)の順番で処理がなされる 画像参考:【…
railsのActiveRecordって便利だけど、実際にどんなクエリが吐かれるかチェックしてないとパフォーマンスすぐに落ちるケース多い。 遅いAPIをどのようにして発見するか? ■ 1.APM(Application Monitoring Management)を導入する おすすめはこの辺り - NewReli…
メリット ■ 開発速度が速い RaislはRubyを使ったフルスタックWEBフレームワーク(DBを扱うActiveRecordが優秀、、メールを送る仕組みがデフォルトである、ジョブを実行できる)で、Rails Wayな書き方をすることで開発スピードを上げることが出来る。 Rails W…
has_option_thumbnail == 'true' みたいな条件判定をした場合、has_option_thumbnail == 'TRUE'のような場合ではfalseと判定されてしまいます。 この対策としてhas_option_thumbnail == 'true' || has_option_thumbnail == 'TRUE'にすればOKなんですが、なん…
Everyday Rails - RSpecによるRailsテスト入門のまとめ 読みました。 超適当に内容まとめる。 全体 describe、context、before、after を使ってスペックを DRY にする マッチャはREADMEを参考にすると良い。参考リンク shoulda-matchersを利用すれば、便利な…
RSpec が提供するデフォルトのマッチャをすべて見たい場合はGitHub にある rspec-expectations リ ポジトリ20の README が参考になるかもしれません。 https://github.com/rspec/rspec-expectations
Bundle Updateする時は影響範囲を最小限にしようという話 bundle updateをすると全部のライブラリの依存関係を持ったgemも含めてアップデートされてしまいます。 そうすると、影響範囲が大きすぎて予期せぬバグになるケースが存在します。 ですのでBundle Up…
Sidekiq アンチパターン 業務でsidekiqを利用するケースがあったのですが、sidekiqのアンチパターンについて知らなかったのでまとめました。 1. 命名規則について ワーカーの名前は後から変更するのは後から変更するのは大変です。 ワーカーの命名規則をつけ…
ActiveRecord::Base.connected_toの利用方法 今の現場でActiveRecord::Base.connected_toを利用した実装をしており、初めてみた書き方だったのでメモを残す。 データベースのルールを明示的に指定することが出来る ActiveRecord::Base.connected_to(role: :w…
Rails::Application.config_forを使うと、設定ファイル全体を読み込むことができます。 例) Rails.application.config_for(:for) config_for(:for)とする事によって、config/foo.ymlに設定された内容を、そのまま定義することができます。 config/foo.ymlの…
sidekiqの使い方備忘録 仕事でsidekiq利用する機会があったので使い方の備忘録を残す(自分用) sidekiqとは? github.com Simple, efficient background processing for Ruby. Sidekiq uses threads to handle many jobs at the same time in the same proc…
【Rails】更新系メソッドまとめ すでにテーブルに保存されているデータを、新しい情報に更新するメソッドに関してまとめてみました。 自分用備忘録です。 updateメソッド user = User.create(name: 'Taro', age: 15) # 成功 user.update(name: 'Taro') # => …
複雑なクエリの場合はO/Rマッパーではなく直接SQL書いた方が良いという話 RailsのO/Rマッパーだけでは複雑な条件取得の場合に役不足のケースがあります。 その場合は直接SQLクエリを作成する方が早いケースがあります。 例)直近1週間で60分以上ゲームした…
groupを利用した少し複雑な処理方法 タイトルがうまく思いつかないので、よくわからないと思うのですが。 下記のようなケースを想定した場合の処理について説明します。(自分用備忘録です) 例)ユーザーがゲームをした回数を調べたい、日付毎に確認したい…
大文字小文字を区別しないでActiveRecord(where)で取得する方法 ■ モデル構造 Personテーブルから名前がstevejobsのレコードを検索取得したい場合 モデルクラス.where("列名 LIKE ?", "%値%") # 値(文字列)を含む で取得できるので以下のように実装します。 …
LimtとOffsetでレコード指定して取得する方法 レコード数を指定して取得したい時に便利な方法を記載します。 limitメソッドは、取り出すレコード数の上限を指定します。 クライアントテーブルから5レコード取得 Client.limit(5) ↓ SELECT * FROM clients LI…
Raisでバルクインサートする方法 Railsでバルクインサートする方法を記述します。 バルクインサートとは? ↓ qiita.com では、Railsでバルクインサートするにはどうすれば良いのでしょうか? フルスタックフレームワークであるRailsであればバルクインサート…
form_withのあれこれ Rails5.1以降に登場したform_withの利用方法のメモ残す。 Rails5.1以前に利用されていたform_forとform_tagは非推奨になったので基本利用しないようにしましょう。 form_withではモデルに関連するもの、関連づかないフォームのどちらで…
はじめに PaaSシステムのHerokuを利用しているのですが、DBを使用する際に、直接SQLを手動で実行したいケースが発生しました。 (正式にはPostgreSQL をチューニングしたHeroku Postgresを利用しています) https://www.heroku.com/postgres ■ 手順 STEP1. He…
Kintoneのwebhook利用方法 サイボウズ株式会社が提供しているKintoneのWebhookを利用してRailsアプリと連携する実装をしました。 簡易的ですが、実装方法を記載します。 Webhookとは WebhookとはWebサービスであるイベントが実行された時に外部サービスにPOS…
RailでCSV出力する方法 RubyのCSVを利用すれば簡単にCSV出力が可能です。 環境 ruby 2.6.3 Rails 6.0.0 View # ポイントは引数にformat: :csvを指定することです。 # これでcsv形式でのリクエストを送ることができます。 <%= link_to "csvで出力する",hoges_…
Hash から文字列でもシンボルでも値を取り出す 先日のプルリクでhashの文字列とシンボルで取り出す実装をそれぞれ分けていたら、コメントで「with_indifferent_access」を利用してください。というコメントが.... なんだwith_indifferent_accessとは?と思い…
redirect_toでアンカーリング移動する方法 オプションのanchorを使えばページ内ジャンプ機能ができます。 めちゃ簡単です。 redirect_to hoge_path(anchor: 'description') hogehogeはジャンプ先のidです。 #description .card-header h4 ここにリンクします…
ActiveModelSerializersの備忘録 会社でActiveModelSerializersを利用する機会があったのですが、よく理解していなかったので自分用の備忘録を残す。 ActiveModelSerializersとは 最近ではRailsをAPIモードで開発する機会も多い。 ActiveModelSerializers: J…
前提条件 - HTTPのGetリクエスト - Userモデルのデータを全部取得(User.all) - その内容をindex.html.erbに渡して表示させる。 ブラウザからURLのリクエスト(このリクエストは、アドレスバーにURLを入力したりリンクをクリックした時に発生する)をRails ro…
デフォルトのタイムゾーンを日本時間にする方法 RailsアプリケーションのデフォルトのタイムゾーンのURCから日本時間に変更する方法を紹介します。 config/application.rbを以下のように修正します。 . . . module Hogehoge class Application < Rails::Appl…
new newでオブジェクトを作成する。saveするまで保存されない。 micropost = Micropost.new(hoge: 'hoge') micropost. persisted? # => false. オブジェクトだけ作成されていて、保存されてない micropost.save micropost. persisted? # => true. saveしたあ…