とーますメモ

Ruby on Rails / Goなどの学習メモ

Rails

【Rails】migrationファイル実行時に同時にSQLを実行する方法

作成するmigrationファイルの処理は、1つのカラムを追加するというシンプルな処理のみを行う。 しかしdefault値は設定せず、全レコード上の作成されるカラムには、特定の値を埋め込みたいという要件があったため migration実行時にカラムを追加後、その特定…

【MySQL】フランス語などのアクセントが正しく取得できない。

以下が参考になった。mysql – selectクエリを使用してアクセント記号のない文字でカラムをフィルタリングする方法 - コードログ utf 8 - How to conduct an Accent Sensitive search in MySql - Stack Overflow以下のように「COLLATE utf8_bin」を付ければ良…

【Rails】ActiveRecordの属性メソッドを上書きする

使用しているWebアプリの1つに Railsが管理しているDBではない、他のDBからのデータを取得する必要があった。当たり前の話だが、Railsではapplication.rbのtime_zoneの設定のため 日付取得の際に自動で、タイムゾーン変換が行われる。thoames.hatenadiary.j…

【Rails】難しすぎる!? Timezone(タイムゾーン)についてのメモ

自分用メモ。大事なことは全て以下のページにあった。 qiita.com qiita.com上記の内容から重要なポイントを抜き出すと以下の通り。 1)タイムゾーンの設定 システムまたは環境変数のタイムゾーンとapplication.rb(time_zone)が同じならば、 Time.nowでもTim…

【Rails】サービスクラスについて自分なりにまとめてみた

最近、設計した画面が4〜5個のモデルが絡む画面があった。 その時コントローラー内で実装した場合、肥大化することが容易に想像でき、 またどれか一つのモデル内で実装する処理としては複雑なため「サービスクラス」が必要なのではないかと思い調べてみた…

【Rails】Form Objectを使ってみた

Formオブジェクトについての説明は省略。自分なりの定義方法は以下ファイル名: XXXX_form.rb クラス名: XXXXXForm 配置ディレクトリ: app/forms/[参考] 【Rails】FormObjectを使ってほしい - Qiita

【Rails】Rails4で親モデル用のサブディレクトリを作成し、STI(単一テーブル継承)をやってみる

サブディレクトリの作成 サブディレクトリを配置する場所は app/models内。ディレクトリ名はここでは「app/models/parents」とした。Rails4ではmodels直下しか読み込まれないので 「config/application.rb」内に以下を追加し、models内のサブディレクトリ内…

【Rails】はてなブログをAtomAPIを使用して作成してみた

Rubyで記事をAtomAPIを使用して更新する方法としては、「atomutil」というgemを使用するのが定番のようだが いろんな記事を見てみると、新しいRubyのバージョンだと、文字エンコーディングのエラーが発生するため 「atomutil」をforkした「ruby-atomutil」と…

【ShopifyApp × Rails】Embedded(埋め込み)方式じゃないアプリの作成方法

公式にも詳細が載っていないので調べてみた。 TL;DR 以下の3つの設定が必要。① [必須] アプリ管理側画面で、「Embedded」設定をオフにする ② [必須] config/initializers/shopify_app.rbの「config.embedded_app」をfalseにする ③ [任意] layoutファイルを…

【Rails5】Systemdを使用したPumaの自動起動設定

自分用メモ。Systemctlは、Systemdを管理するためのコマンド。 Systemdは、デーモンプロセスを自動立ち上げるるために使用される。 以下のサイトが詳しい。 Systemd メモ書き いまだにsysvinitの手癖が抜けない人のためのsystemd Linux女子部 systemd徹底入…

【Rails5】Production環境の罠

自分用メモ Autoloadの廃止 こんな感じのautoloadがproduction環境では動作しなくなる。。。 config.autoload_paths += Dir["#{config.root}/lib/**/"] [参考] Rails5: production環境でのAutoloadの廃止

【Rails5】アセットパイプライン(Asset Pipeline)についてのまとめ

自分用メモ。そもそもアセットパイプラインのプリコンパイルとは? プリコンパイルは、複数のファイルをいっこにまとめて、圧縮して、ファイル名にフィンガープリント(ダイジェスト)をつけて、公開ディレクトリにデプロイする、などの作業と解釈してます。…

【Rails】Production環境のために必要な設定

自分用メモ。1)環境変数の設定 以下の環境変数を「.bashrc」に設定。※Capistranoで読み込む環境変数の場合、.bash_profileだと読み込んでくれないため。 以下の詳細。 thoames.hatenadiary.jp①RAILS_ENV(設定しておけば、コマンドで逐一入れなくても良く…

【Rails】Mac上でImagemagick + RMagickをインストール

Imagemagickはコマンドラインから画像の操作や表示ができるツール。 多くのOS及び言語から使用できるため人気がある。RMagickはRuby用のImagemagickインターフェース。 RubyからImagemagickを使用する場合は、このgemをインストールする。 Imagemagickのイン…

【Capistrano】リポジトリ変更時に行うこと

自分用メモ。以下のサイトがまとまっている。 capistrano3でリポジトリのURLを変更した時にやること - Qiita

【Rails】CapistranoでBitbucketからcloneしデプロイするまで試してみた

【環境】 Ubuntu + Rbenv + Rails + Puma + MySQL 1)SSH周りの設定 前提 公開リポジトリの場合は、Capistranoの設定は簡単だが、BitbucketのPrivateリポジトリからcloneする場合は、SSH認証が絡んでくるため、設定が少し複雑になる。ちなみにGithubのPriva…

【Rails】Rails5で文字列の"true"や"false"をBooleanにキャストする方法

Rails5では以下のように書ける。 ActiveRecord::Type::Boolean.new.cast(0) # false ActiveRecord::Type::Boolean.new.cast(1) # true ActiveRecord::Type::Boolean.new.cast('0') # false ActiveRecord::Type::Boolean.new.cast('1') # true ActiveRecord::…

【Rails】Sidekiqを使用してみた。

自分用メモActiveJob経由か、直接使うかは 以下の記事で詳細を書いた。 thoames.hatenadiary.jp自分の場合は、フルにSidekiqの機能を使用したかったため 「直接Sidekiqを使用する」方法を取る。 インストール Gemfile gem 'sidekiq' gem 'redis-namespace'[…

【Rails】SidekiqをActiveJob経由で使うのが良いか、直接使うのが良いのか。

初めてバックエンドの非同期処理を書くことになったため 良さそうなgemを探したところ、以下の3つが有名なことがわかった。・Delayed Job ・Resque ・Sidekiq色んなサイトで、各gemの説明があるので ここではその説明は省くが 自分の場合、以下の理由から・…

【Shopify】Rails内でWebhookを試してみた

自分用メモ。ShopifyのWebhookの使い方については 既に素晴らしいまとめをしてくださっている方が いるので、その方のやり方を踏襲。qiita.com一点だけ追記すると、検証ロジックの「Secret Key」は 手動でWebhookを作成する場合と、AdminAPIを用いて作成する…

【Shopify】Railsを利用したShopifyアプリを作成してみる

自分用メモ。 アプリを作成する前に前提として以下の3つの準備が必要 ①ngrokの設定 最初からサーバを用意できるのならば、それでも良いかもしれないが 自分の場合、ローカルマシンを開発サーバとして、 Shopifyから「直接」アクセスさせる方法を試す。local…

【Rails】Carrierwave(1.2.2)をActiveRecordと切り離して使用する方法を試してみた。

自分の用途としては、ただ画像を外部APIへ送信するため ローカルDBに保存する必要がなかった。しかし、多くのサイトを見るとCarrierwaveをActiveRecordと併せて使用する サンプル例が多いため、自分で調べてみた。 インストール Gemfileに追記 gem 'carrierw…

【Rails】独自例外の置き場所(配置ディレクトリ)について

自分用メモ。日本語で検索しても情報が出てこなかったので ちょっと調べてみた。調べ方としてはGithubのコード検索で「 出てきたコードがどのディレクトリに配置されているのかで調査。10件〜15件ぐらい見た感じだと、大体が「lib」ディレクトリ内に入れる。…

【Rails5】バリデーションエラーでtranslation missingが出る。

自分の場合、英語で表示したかったの 以下を設定したが何も変わらず。失敗した例: config/application.rb config.i18n.default_locale = :en 以下を設定したら上手く表示された。成功した例: config/application.rb config.i18n.fallbacks = [:en] [参考] …

【Rails】renderで指定したテンプレートの内容(文字列)だけを取得したい場合

renderではなく、「render_to_string」を使用すれば良い。例)views/templates/_default.html.erbを使用する前提。 render_to_string partial: "templates/default", locals: { title: params[:title], body: params[:body] } [参考] ruby-rails.hatenadiary…

【Shopify × Rails】ShopifyAppに手動でログインする方法

自分用メモ。shopify_appを使用しているなら通常は 未ログイン状態の場合、ログイン画面に遷移し、omniauthを通じた認証が行われる。認証後はセッションにShopify情報にアクセスするためのセッションが保存される。ただ自分の場合、Activeadminと組み合わせ…

【Activeadmin超入門】CanCanCanの設定 〜その2〜

前回の【Activeadmin超入門】インストール・環境設定 〜その1〜 - とーますメモに続けて、権限管理を行うためのCanCanCanの設定を書いていく。前の記事にも書いたとおり、CanCanCanはCanCanの後継プロジェクトであり、 設定の仕方はCanCanと同じように記述…

【Activeadmin超入門】デザイン・スキン変更 〜おまけ〜

複数の管理画面をactiveadminで使用している場合は 間違わないようにするために、できれば違うデザインを反映させたいところ。ここではActiveadminで使用できるスキンである「ActiveSkin」を紹介する。github.com 1)インストール gem 'active_skin' 2)SC…

【Activeadmin超入門】インストール・環境設定 〜その1〜

Activeadminとは 要は「管理画面」系のRailsアプリをお手軽に作ることができるgem。デザインは単調なものだが、決まったやり方に沿って作れば、 CRUD画面、検索フィルター、バッチ処理、CSV出力などの処理 また連携するgemを入れることでユーザ認証、権限管…

【Rails】select_tag使用時にデフォルト値を設定する方法

ググってもさっくり結果が出なかったので自分用のメモ。select - リファレンス - - Railsドキュメント上記の公式ページを見ると、 optionsの設定には、「options_for_select」を使用しているが :selectedを指定している例がなかったので調べたら、 やっぱり…