Ruby

Railsで、Action Mailerの callback・interceptor・observer の実行タイミングを調べてみた

RailsのAction Mailerには callback 3 Action Mailer Callbacks | Action Mailer Basics — Ruby on Rails Guides interceptor 7.1 Intercepting Emails | Action Mailer Basics — Ruby on Rails Guides observer 7.2 Observing Emails | Action Mailer Basic…

Active AdminのControllerでは、Strong Parameters のメソッド名は permitted_params だった

Rails の Controller で Strong Parametersを使う場合、 ***_params というプライベートメソッドを定義しています。 一方、Active Admin の Controller で Strong Parameters を使う時は、デフォルトだとどんな名前になるのかを調べた時のメモです。 目次 環…

Rails + Active Adminで、Active Admin Controllerのcreate/update/destroyをオーバーライドする

Railsでは、Active Adminを使うことで管理者画面を容易に作ることができます。 Active Admin | The administration framework for Ruby on Rails そんな中、Active AdminでModelの作成・更新・削除を行うと同時に、Modelとは関係ないAPIを呼ぶ処理を追加した…

Railsで、同一のbefore_actionを別オプションで複数定義した場合、最後の定義が有効になる

Railsで before_action などのフィルタでは、 only などのオプションを追加することで対象のActionを制限できます。 8 フィルタ | Action Controller の概要 - Railsガイド そんな中、同一の before_action を別オプションで複数定義してしまったことがあっ…

Rails + 名前空間付きのActionMailerを使う場合に、件名をi18nのロケールファイルで指定してみた

Railsガイドによると、Action Mailer の件名は mailメソッドに件名が渡されなかった場合、Action Mailerは既存の訳文の利用を試みます。「<mailer_scope>.<action_name>.subject」というパターンでキーが構築されます。 4.6 Action Mailerメールの件名を訳文に置き換える | Rails 国際化</action_name></mailer_scope>…

Railsで、DeviseのMailerにControllerから値を渡す方法を調べてみた

Deviseの recoverable confirmable lockable の各モジュールでは、各種確認のためにメールを送信します。 メール送信時に使われるのが Devise::Mailer にある reset_password_instructions などのメソッドです。 https://github.com/heartcombo/devise/blob/…

Railsにて、Controllerのactionにクエリストリング付でリダイレクトする

RailsでControllerのactionにリダイレクトする時は redirect_to action: :index のように書くものの、クエリストリング付でリダイレクトする時はどうすれば良いか調べた時のメモ。 環境 Rails 6.1.4 対応 redirect_to の引数を def move_with_field redirect…

Railsで、うっかりトランザクションをネストしたところロールバックされなくなったため、requires_newとjoinableを調べてみた

Railsで、うっかりトランザクションをネストしてロールバックされなくなったので、requires_newとjoinableを調べた時のメモを残します。 なお、調査時のソースコードが長くなってしまったことから、一部のみ記載しています。 もしよろしければ、Github上のソ…

Railsにて、コントローラのアクションが長くて見通しが悪くなったため、Formオブジェクトとフィルタを使うようにした

Railsを書いている中で、コントローラのアクションが長くなってしまい、コードの見通しが悪くなったことがありました。 そのような時はFormクラスとフィルタを使うのが良いと同僚に教わったため、リファクタリングした時のメモを残します。 目次 環境 仕様に…

Rails6.1 + Devise 3.8.0 で、Deviseのデフォルトの挙動を確認してみた

Deviseを使うと認証まわりの機能をRailsに組み込むのが容易です。 ただ、「そういえばDeviseにある各モジュールのデフォルトの挙動はどんな感じだろう」と思ったため、調べた時のメモを残します。 目次 環境 検証するためのRails + Deviseアプリを作成 アプ…

Devise 4.8.0 でメールテンプレートを変更したい場合、カスタムメーラーの template_path ではなく headers_for をオーバーライドする

Rails + Deviseにて、Devise標準のメール受信確認用メールテンプレートを差し替えたいことがありました。 そこで Devise の Wiki How To: Use custom mailer · heartcombo/devise Wiki に従い、 % bin/rails g devise:views users ... create app/views/user…

Rails 6.1 + Devise 4.8.0 で、ルーティングから一部のdeviseモジュールの URI Pattern を削除する

Rails + Deviseでは、ModelにDeviseのモジュールを組み込むと、自動的に routes へ URI Pattern が追加されます。 例えば、 Rails.application.routes.draw do root to: 'home#index' devise_for :users end な routes.rb の時、DeviseのModelが class User …

Rails6.1で、セッションをキャッシュとは別のmemcachedへ保存する

Rails6.1でセッションをキャッシュとは別のmemcachedへ保存しようとした時、色々調べたことをメモに残します。 目次 環境 デフォルトのセッションストレージ Railsアプリの作成 動作確認 キャッシュの保存先を変更するための準備 フラグメントキャッシュを使…

rake -T では表示されないRakeタスクについて

Rakefileの中に定義されているRakeタスクを確認しようと、 rake -T したところ表示されないRakeタスクがあったため、メモを残します。 環境 rake 13.0.2 原因 ヘルプに書いてありました。 rake -T では desc がないRakeタスクは表示されないとのことでした。…

Delayed Job を使って実行する処理を、RubyMineでデバッグをする

Rails + Delayed Job な環境で、Delayed Job を使って実行する処理がありました。 例えばこんな感じです。 # Delayed Job で実行 # call_heavy_api中で外部APIを呼んでいるが、その処理が重いとする Task.delay.call_heavy_api({ foo: 'bar' }) そんな中、De…

Macにrabbitをインストールし、プレゼンテーマを自作してみた

Macにプレゼンツールのrabbitをインストールし、プレゼンテーマを自作した時のメモを残します。 公式サイト:Rabbit - はじめに 目次 環境 rabbitの動作環境を構築 rbenvのインストール rbenvを使ったRubyのインストール Bundlerを使ってrabbitをインストー…

Albacore v2.xを使って、FluentMigratorを実行する

以前、RakeタスクからFluetnMigratorを実行しましたが、Albacore v2.xではfluentmigratorメソッドがなく、Wikiに書かれている内容では実行できませんでした。 そんな中、Albacore v2.xのGitHubを眺めていたところ、albacore/fluent_migrator.rbとそれに対応…

Herokuで .NET(Mono)とRubyのbuildpackを使って、Nancyを起動しつつRakeタスクを実行する

以前、Herokuにて.NETのbuildpackを使ってNancyをデプロイしてみました。 C# + NancyでJSONを返すWebアプリを作り、Heroku Buttonを使ってHerokuへデプロイしてみた - メモ的な思考的な そんな中、.NET(Mono)環境でもRakeタスクを使いたくなったため、いろい…

Windows7 + WEBrick + apcupsdで、UPSの状態をブラウザから確認する

APC製UPSに接続されているWindows端末があり、他のWindows端末からそのUPSの状態を確認したいことがありました。 そこで、apcupsdを使ってブラウザから確認することを試してみました。 apcupsd | A daemon for controlling APC UPSes 環境 APC製UPSが接続さ…

Ruby + Sequelを使って、MS Accessの選択クエリに対してSQL文(CRUD)を実行する

前回は日本語テーブル名やカラム名を持つMS Accessから、Sequelのエイリアスを使ってデータを取得しました。 ただ、毎回エイリアスを定義するのは手間なので、 MS Accessにて、日本語カラム名に対してAS句(日本語→シングルバイト)を使用した選択クエリ*1を作…

Ruby + Sequelを使って、日本語テーブル名やカラム名を持つMS Accessからデータを抽出する

以前の記事でSequelを使ってMS Accessへと接続できることが分かりました。 ただ、残念ながらテーブル名やカラム名が日本語になっていることがあるため、その場合はどうなるかを試してみました。 環境 Windows7 x64 MS Access 2010 (accdb) Ruby Installer 2.…

Ruby + Sequel を使って、ADOやODBCでMS Access(accdb) へ接続する

以前、Ruby + DBIを使ってMS Accessへと接続してみました。 Ruby + Sinatra + DBI + ODBC で、MS Access(accdb)へ接続する - メモ的な思考的な しかし、毎回生SQL文を書いた上でShift_JISに変換する必要があり少々手間に感じました。そのため、Padrinoのペー…

Google Chrome + ChromeAppsのchrome.serial API で取得したデータを、WebSocketを使ってSinatraへ飛ばしてみる

この前はシリアルポートから受信したデータをChromeAppsの画面に表示しました。 それだけではあまり使い道がないので、その受信したデータをSinatraへ飛ばしてみようとChromeAPIを探してみたところ、chrome.sockets.tcpやchrome.sockets.udpAPIがありました…

Ruby + serialport + Sinatra で、シリアル(COM)ポートから受信したデータを表示する

以前、Windows Form を使ってシリアル(COM)ポートでの通信を試してみました。 WindowsFormで、シリアルCOMポートから受信したデータを処理する .Net以外でのシリアルポートで通信する方法を調べてみたところ、 Rubyのserialport gemがあったたため試してみま…

Ruby + ActiveLdapでActiveDirectoryにいるユーザーの所属グループを取得する

Ruby + ActiveLdapでActiveDirectoryにLDAP接続し、ユーザーの所属グループを取得することがあったので、その時のメモを残します。 環境 ドメインコントローラー - Windows Server 2008R2 ドメイン名 - example.local 実行端末 - Windows7 (EXAMPLE.localに…

Ruby + Sinatra + SNMPでPX-105のインク残量を取得・表示する

手元の環境ではプリンターのセットアップをラクにするために、WindowsServerのActiveDirectoryでGPOを使ってプリンターを配信しています。 Windows Server 2008 R2 のGPOにて、クライアントにプリンタを配布する - メモ的な思考的な その環境でEPSONのPX-105…

Ruby + Sinatra + DBI + ODBC で、MS Access(accdb)へ接続する

MS Access(accdb)を使うデスクトップアプリがあるのですが、ブラウザからもaccdbへ接続することが必要になりそうだったので、調べた時のメモを残します。 環境 Windows7 x64 + MS Access(accdb) Ruby 2.0.0p451 (RubyInstaller) + Devkit Sinatra 1.4.5 Ruby…

「Everyday Rails - RSpecによるRailsテスト入門」を写経してみた

The RSpec BookやRailsチュートリアルを終えたタイミングでちょうど Everyday Railsの翻訳本が出たため、今度はこちらを手にとって写経をしてみました。 Everyday Rails - RSpecによるRailsテスト入門 - Leanpub 結論としては、RailsやRSpecを独学で学んでい…

写経環境を、vagrant-berkshelf から Vagrant + knife-solo + Berkshelf へと変更した

以前、GDG信州でvagrant-berkshelfを使った写経環境構築の発表をしましたが、その数日後にvagrant-berkshelfが非推奨になってしまいました*1。 今のところは使えるものの、将来的なことも考えて、手元にある写経用の環境を Vagrant + knife-solo + Berkshelf…

Railsチュートリアル 4.0版の演習について、自分なりの解答をまとめてみた

Railsチュートリアル4.0版には各章に演習が付いていますが、模範解答みたいなものは示されていないため、この書き方で良いのかと悩むこともありました。 そのため、復習した時のことを考えて、自分の解答をまとめておきます*1。 なお、4章はsample_appと関係…