窓際BLOG

プログラミングの学習メモや書籍の感想等を公開していきます。

RubyonRails

RubyonRails:deviseのControllerをちょっとだけカスタマイズする

Moook(https://moook.herokuapp.com/)では、deviseで認証機能を作っています。 管理用にユーザーが新規登録されたらslack通知が行われるようにしたかったのですが、deviseはdefaultではコントローラーの実体のソースが無いので、一定の手順を踏む必要があり…

RubyonRails:Slack通知処理を実装する

Moook(https://moook.herokuapp.com/)を運用していて、毎日管理画面を確認するのがめんどくさかったので、新規ページが追加された時にSlackに通知が送られるようにしましたφ(..) その手順をメモしておきます。 やりかた gemのインストール Slackの設定 通知…

RubyonRails:deviseのcurrent_userの返り値をカスタマイズする

deviseのヘルパーメソッドcurrent_userの返り値がデフォルトだとnilになるが、 空のUserインスタンスを返したかったけどハマったので、やり方をメモφ(..) やり方 application_controller.rbでcurrent_userをoverrideする。 しかし、alias_method :devise_cur…

RubyonRails:kaminariを使ってページャーを簡単に実装する

開発中のサービス「いつもの更新、いつでも確認 | Moook」でページャーを実装する際に使用したgemkaminariの使い方をメモφ(..) github.com 使い方 gemのインストール 実装 Controller View ローカライズ おわりに 使い方 gemのインストール kaminariを使うに…

RubyonRails:Rails5で使えるデータ検索関連のメソッドをまとめてみた

現在、Railsブロンズ試験を受験してみようと思い、RubyonRails5アプリケーションプログラミングという本で勉強中なので、頭の整理も兼ねて学んだことをまとめてみるφ(..) Ruby on Rails 5アプリケーションプログラミング作者: 山田祥寛出版社/メーカー: 技術…

Ruby on Rails:インスタンス変数等をjavascriptに受け渡す方法

はじめに Railsで取得したデータを使ってChart.jsでグラフ描画する等、Railsで扱っている変数をjsに受け渡す方法をメモφ(..) ↓イメージはこんな感じ 手順 概要 取得データをJSONに変換し、HTML要素のdata属性に設定(viewに埋め込む) jsで設定した要素のdata…

Ruby on Rails:文字列の一部だけエスケープさせずにHTMLとして認識させる方法

はじめに 掲示板のアプリケーション等、特定の文字部分(>>3等)を<a></a>として認識させる方法をメモφ(..) ↓イメージはこういう感じ やりかた 今回は>>数字を返信用の文字列として扱い、<a></a>でページ内リンクを貼るケースを想定してますφ(..) 文字列全体をhメソッドを使…

RubyonRails:herokuのDBを開発環境(ローカル)へリストア(復元)する。

はじめに herokuで運営しているサービス(いつもの更新、いつでも確認 | Moook)の本番環境のデータを開発環境に反映させたときの手順をメモφ(..) 前提 環境 今回の手順を行った環境は下記の通りです。 title memo Production環境 heroku Rails ver 5.1.2 DB p…

Ruby on Rails:ファビコン(タイトルアイコン)の設定方法

はじめに Ruby on Railsで作成したWebアプリケーションにファビコンを設定する方法をメモφ(..) 設定方法 app/assets/imagesフォルダにファビコン用の画像を配置し、application.html.erb内に下記を記述します。 application.html.erb # favicon.pngは任意の…

Ruby on Rails:メール送信処理の準備・実装内容について(開発・本番環境)

はじめに Ruby on Railsでメール送信を行う際に必要となったツール及び実装を整理しましたφ(..) 目次 はじめに 目次 ActionMailerとは 用意するツール SendGrid 使い方 herokuへプラグインを導入 設定用にSendgridの情報を取得 SendGridの情報を環境変数へ設…

Ruby on Rails:生のSQLを作成(直書き)して実行させる方法

はじめに Railsのアプリを作ってて、複数TBLを結合した結果をGROUP BYで集計するような、ちょっと複雑な検索処理が必要となり生のSQLを実行したかったので、そのやり方をメモしましたφ(..) やりかた SELECT文の場合は、ActiveRecord::Base.connection.select…

Ruby on Rails:form_forでundefined method `to_key'が出続けてハマった話

あるモデルに紐づくモデルの登録を'form_for'を使って行おうとしたところ、下記エラーが出続けてハマったので対応策をメモφ(..) ActionView::Template::Error at / undefined method `to_key' for #<Favorite::ActiveRecord_AssociationRelation:0x007fcefaa056b0> Did you mean? to_set to_ary 原因 紐づくモデルの取得をm</favorite::activerecord_associationrelation:0x007fcefaa056b0>…

Ruby on Rails:複数の取得結果を合わせて、更新日時の降順で並び変える方法

ruby on railsで別のメソッドで取得した結果を合わせて、更新日時の降順に並べ替える際にハマったのでメモφ(..) やりたかったこと 別メソッドで取得した結果を結合後に更新日時の降順に並べ替える。 例:キーワードに合致するタグ及び名称を持つレコード 最…

RubyonRails:deviseを導入したらテストが通らなくなってハマったのでメモ

deviseを導入し、userモデルを作成後テストが通らなくなったので、 その事象と対応策をメモしますφ(..) 事象 deviseを導入しuserモデルを作成後、rails test実行時に下記エラーが発生し、テストが通らなくなった。 $ rails test ActiveRecord::RecordNotUniq…

RubyonRails:Railsアプリケーションを作成後にまずやること

rails newしたあとにやることを備忘目的でメモしました(o・ω・o) 不要なコメントを削除する。 デバック用のGemをGemfileに追記する。 タイムゾーンを日本時間に変更する。 本番環境用のログ出力レベルを変更する。 rails gで不要なファイルは生成されないよ…

RubyonRails:deviseのエラーメッセージをカスタマイズする方法

deviseで発生するエラーメッセージのBootstapっぽくしたかったので、その方法をφ(..)メモメモ 事象 deviseでは、通常エラーメッセージをdevise内で定義されているdevise_error_messages!で表示させるため、class等を設定し、レイアウトを調整することは出来…

RubyonRails:SNSログインエラーの確認ポイント

SNSログイン周りのエラーで大分ハマったので、確認観点をメモ。 エラー Facebook Twitter API KEYとSECRET KEYは一致しているか? API KEYとSECRET KEYが作成したAPIと一致しているか確認する。 API KEYとSECRET KEYは取得出来ているか? 下記コマンドを実行…

RubyonRails:データベースをsqlite3からpostgresqlに変更する方法

間違えてsqlite3でRailsアプリケーションを作成してしまい、 途中からposgresqlに変更した手順をメモφ(..) 変更手順 Gemfileの修正 sqlite3をコメントアウトし、postgresql用のgempgに変更 # gem 'sqlite3' gem 'pg' 変更後、下記コマンドを実行 bundle inst…

RubyonRails:登録時にRollbackされる原因がわからない時の対処法

model.saveの際になぜか TransactionがRollbackされ原因調査でハマったのでメモφ(..) 対処法 model.save!で登録を行ってみる。 model.saveの返り値は、true/falseのため、どのようなエラーが発生しROLLBACKされているかはわからない。 しかし、model.save!で…

RubyonRails:検索フォームの作り方

Railsで検索フォームを作ったときに少しハマったので、メモ やりたかったこと トップページにユーザー検索を行うフォームを設置し、 検索ボタン押下後、検索結果を引き継いだユーザー一覧を表示。 解決方法 <form action="呼び出したいアクションに紐づくurl">を設定すれば良い。 ※呼び出したい 実際のコード r</form>…

RubyonRails:IN句を使った取得条件の指定(自分とフォロー済ユーザーの投稿取得)について

自分の投稿とフォローしているユーザの投稿をトップページで表示したかったけど、RailsでどうやってSQLのIN句のような形の条件指定でハマったので、メモ。 指定したかった条件 下記を含んだ投稿の取得 自分自身の投稿 フォローしているユーザーの投稿 対応方…

RubyonRails:githubからcloneして実行するまでの手順メモ

githubに上がっているRubyonRailsアプリを自分のローカル環境で実行するまでの手順メモ 前提 ・rubyがインストール済であること ・gitがインストール済であること ・PostgreSQL等のDBMSがインストール済であること 手順 リポジトリのクローン 下記コマンドを…

RubyonRails:RailsチュートリアルでImageMagickをインストールしたのでメモ

Railsチュートリアルでローカルに開発環境(CentOS)を作った際にImageMagickをインストールする手順が乗ってなかったので、メモメモφ(..) 第11章の下記のように修正すると、 class PictureUploader < CarrierWave::Uploader::Base include CarrierWave::MiniM…

RubyonRails:stack level too deepでハマった話

RailsTutorial中にstack level too deepでハマったのでメモ エラー画面 原因 現在ログインしているユーザの取得処理とその呼び出し元のメソッド名が重複していた。 class MicropostsController < ApplicationController before_action :logged_in_user,only:…

RubyonRails:RubyonRailsチュートリアル回答メモ(第6章)

第6章の回答メモです。 「ユーザーのモデルを作成する」 問1 問 リスト6.31の、メールアドレスを小文字に変換するコードに対するテストを、リスト6.41に示されているように作成してください。このテストでは、reloadメソッドを使用してデータベースから値を…

RubyonRails:RubyonRailsチュートリアル回答メモ(第1章)

Ruby on Rails チュートリアルの演習回答メモです。 第一章「ゼロからデプロイまで」 演習1 問1 リスト1.8のhelloアクションを書き換え、「Hello, world!」の代わりに「hola, mundo!」と表示されるようにしてみましょう。課外作業: Railsの表示では「非ASCII…