ノンカフェインであなたにやさしい

Ruby,Rails,HTML,CSS,Reactなど

Ruby on Rails

Searchkickを使ってidでorderするときの罠

Searchkickでidでorderしようとしたのに全然動かなかったのでその対応方です。 github.com 通常の使い方 Product.search(order: { id: :desc }) これだとなぜかidでソートされない idでソートする方法 orderの中身を配列で囲む Product.search(order: [{ id:…

Rspecでテストをスキップさせる

(あまり良くないんだけど)ちょっとスキップしたい場面に出くわしたのでメモ ブロックを skip とするか RSpec.describe "an example" do skip "is skipped" do end end 頭に x をつければいいだけらしい RSpec.describe "an example" do xit "is skipped us…

RailsでCloudinaryを使う

CarrierWave、Cloudinaryを使った画像アップロードの方法です。 cloudinary.com 今回のバージョン ruby: 2.5.0 rails: 5.1.6 Cloudinaryに登録 Cloudinaryに登録して使える状態にしておきます。 登録後サイト内で cloudinary.yml がダウンロードできるはずな…

webpackerでA JSON text must at least contain two octets! (JSON::ParserError)と怒られた話

エラー内容 rails c や rails s をすると以下のエラーが webpack系のjsonのパースが上手くいっていないよっていうエラーっぽい Exiting Traceback (most recent call last): 51: from bin/rails:4:in `<main>' 50: from bin/rails:4:in `require' 49: from /home/v</main>…

Rails selectタグにクラスを付ける

f.select :foo, { a: 1, b: 2 }, class: 'bar' => <select name="model[foo]"> # あれ?classが居ない 時々ど忘れしてドキュメントを読みに行くやつ。 この様に定義されています。 def select(method, choices = nil, options = {}, html_options = {}, &block) ref: rails/form_option</select>…

Step-to-Rails-Expert.rb#20 に参加した話

Step-to-Rails-Expert.rb#20に参加してきました step-to-rails-expert-rb.connpass.com Step-to-Rails-Expert.rb 参加は2回目 今回からもくもく会ベースの企画になりました 内容 みなさん今日やることや気になった話題のシェアしながらもくもくしたり話した…

メンター業はじめました(?)

MENTAというメンターとメンティーのマッチングサイトに登録してみたら 申し込んでくれる方がいたため晴れて(?)メンターになりました✨ menta.work なんでやっているか つまるところ、自分のためです。 スキルアップのため 恩送り的な 情けは人の為ならず的…

Step-to-Rails-Expert.rb#19 に参加しました

Railsの勉強会、Step-to-Rails-Expert.rb#19 に参加してきました! Step-to-Rails-Expert.rb って? 公式の説明をそのまま… 本勉強会はStep-to-Rails-Expert.rbというRails関連中級者向けの勉強会です。 コンセプトとしては、初心者を抜けたレベルの人が中級…

Sidekiqのジョブを削除する [Rails]

ローカル環境で溜まってしまった無駄なジョブにサヨナラする方法です。 処理待ちジョブ確認 処理待ちジョブ1件削除 処理待ちジョブ全件削除 リトライ待ちジョブ確認 リトライ待ちジョブ1件削除 リトライ待ちジョブ全件削除 とりあえず全部削除 の7本立て 処…

Rails RansackでNULLS LASTでsortする

Ransackのconditionには入れられないらしい NULLS LASTでsortするには Ransackの外側で普通にOrder指定する Model.search(conditions).result.order('column DESC NULLS LAST') 脱Ransackしたい 参考 How to add NULL LAST to sorts · Issue #443 · activere…

RailsでPostgreSQLにNULLS LASTのインデックスを追加する方法

タイトルママ nulls lastのインデックスを作りたいけどなかなか見つからなかったので書きました。 migration にこれ add_index :table, :column, order: { column: 'DESC NULLS LAST' } 参考 PostgreSQL: Ordering, NULLs, and indexes - makandropedia 元の…

Railsでall_hourメソッドが欲しい

Railsの時間関係の便利なメソッド達 all_month, all_day などなど… でもall_hour がない 作ってしまおう class ActiveSupport::TimeWithZone def all_hour beginning_of_hour..end_of_hour end end Time.current.all_hour # => Mon, 26 Jun 2017 19:00:00 JS…

RailsでDBに配列Arrayを保存する

RailsでDBに配列を保存する方法 serialize :column_name を指定 RailsでDBに配列を保存する方法(サンプルコード) class Hoge < ApplicationRecord serialize :arr end hoge = Hoge.new(arr: [1, 2, 3]) puts hoge.arr # => [1, 2, 3] Arrayと明示するとこう…

Railsのpartialに変数を渡す方法

<%= render partial: 'hoges/index', locals: { moge: @user.moge } %> localsで変数を指定するだけ 部分テンプレートでmogeが使えるようになります。 renderの後のpartialも必要。忘れそう… # hoges/index.html.erb <%= moge %>

Railsでprimary_keyとforeign_keyの両方を指定して主キーではないカラムで関連付けする

こんな関連付けのモデルがあったとして class Atable < ApplicationRecord has_one :btable has_one :ctable end class Btable < ApplicationRecord belongs_to :atable end class Ctable < ApplicationRecord belongs_to :atable end bからcを呼び出すのに …

電話番号の正規表現はどうしたらいいのか

Railsのアプリを作っていて電話番号のバリデーションをするための正規表現はどう書いたらいいのか悩んだので調べてみました 電話番号の正規表現 日本の一般の電話番号の正規表現はこうなりそう /\A(((0(\d{1}[-(]?\d{4}|\d{2}[-(]?\d{3}|\d{3}[-(]?\d{2}|\d{…

Rubyで改行、空白を削除する

文字数を取得する時などに改行や空白文字を削除したい text = "春はあげぽよ てか、どんどん白くなる山の端らへんが異常に明るくなって、紫の雲が細く風に流されてるの見て、マジパねぇ、ウケる。 夏は神テン 満月がデラヤバなんてあえてウチの口から言うま…

content_tagで閉じがないhtmlタグ<br/>や<img/>を出力する?

<br /> を出力したくて content_tag(:br) とやったら <br></br> と出力されてしまった… content_tagじゃなくてtagを使うとのこと なるほどcontentがあるかないかの単純な話だったらしい tag知らなかった… 結果 無事brタグが出力されました tag(:br) ↓ <br />

Tagging a string as html safe may be a security risk

RuboCop(0.48.1) で Tagging a string as html safe may be a security risk と怒られた htmlタグを直書きせずにcontent_tagを使えということらしい↓ # bad "<p>#{text}</p>".html_safe # good content_tag(:p, text) # bad out = "" out << content_tag(:li, "one"…

RailsでHSTS includeSubDomainsを外す方法

Rails5からforce_sslを設定しているHSTSでサブドメインまで対象にされてしまうようで設定から外したい config/initializers/new_framework_defaults.rb に以下を追加でサブドメインを外すことができます Rails.application.config.ssl_options = { hsts: { s…

Rails コントローラーからヘルパーメソッドを呼ぶ [controller,helper]

Railsのコントローラーからヘルパーメソッドを呼びたい view_context を使う view_context.hogehoge ヘルパーをインクルードしたりしなくても使えるみたい

Rails GroupでまとめてCountした結果をHavingを使って絞り込む [ActiveRecord]

COUNT(*) した結果で絞り込む方法 Havingを使う Hoge.group(:user_id).having('count(*) > ?', 5).count

Railsでdevelopmentのエラー画面をproductionと同じにする

config/environments/development.rb ~~~ consider_all_requests_local = false ~~~ consider_all_requests_local を false にするだけ Configuring Rails Applications — Ruby on Rails Guides

constantizeした時にactive_support/inflector/methods.rb:268:in `const_get': uninitialized constant Hoge (NameError)と怒られる問題[Rails]

h = 'Hoge'.constantize h.create(fuga: 'fuga') した時に active_support/inflector/methods.rb:268:in `const_get': uninitialized constant Hoge (NameError) とHogeという定数、クラスがなかったため怒られてしまった。 safe_constantizeで回避 safe_con…

rake taskの中断はreturnではなくnextだった[Rails]

task :test do puts 'hoge' return puts 'moge' end 実行する rake aborted! LocalJumpError: unexpected return 怒られた… rake taskの中断はreturnじゃなくてnextとのこと task :test do puts 'hoge' next puts 'moge' end 以下の場合はreturnとのこと tas…

株式会社サックルに行ってきました

鬼丸さんにご招待していただき株式会社サックルにおじゃましてきました! 打ち合わせスペースなどめちゃくちゃオシャレ!! Pepper君がいる!!Pepperめっちゃ話に割り込んでくる!! (残念ながら写真撮ってないのでWantedlyでご確認くださいまし…) お伺い…

RailsのTimeクラスChangeメソッドについて

TimeクラスChangeメソッドの挙動について まずは年月日を変更してみる。 Time.new(2016, 3, 15, 10, 10, 10).change(year: 2015) # => 2015-03-15 10:10:10 +0000 Time.new(2016, 3, 15, 10, 10, 10).change(month: 1) # => 2016-01-15 10:10:10 +0000 Time.…

Railsで現在のURLを取得、現在のpathを取得

Railsで現在のURLを取得 # http://hoge.com/aa/bb?c=d にアクセスした場合 request.url # 'http://hoge.com/aa/bb?c=d' Railsで現在の pathを取得 # http://hoge.com/aa/bb?c=d にアクセスした場合 request.fullpath # '/aa/bb?c=d' request.path_info # ク…

Railsのリファクタリングに使える情報、気をつけたいことまとめ

Railsで開発する際に気をつけたいことや、リファクタリングに使える記事です。 覚えておきたい、リファクタリングの際に都度つど読み直したい記事がいくつかあったのでまとめます。 qiita.com qiita.com qiita.com qiita.com

CompassでCSSスプライトを簡単につくる[Rails, Compass, CSS Sprite]

Compassを使ってCSSスプライトを作る手順です。 以下の記事を参考にさせていただきました。 CSS3 - Rails + Compass でCSSの開発を高速化! - Qiita まず、CSS Spriteでまとめたい画像をimagesの中に保存します。 あとはSCSSを下記のように。 @import "icons…