You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
こんにちは、freee会計でエンジニアをしている @sakakibara-setu です。 普段は債権債務に関する機能を担当するチームに所属して開発を行っていますが、この度freee会計のRailsアップデートを担当することになりました。 実はfreee会計は、先日2021年12月にRails 5系からRails 6系へとメジャーアップデートされました。 ありがたいことにこのメジャーアップデートによる問題は一件も発生しなかったため、皆様には特にお変わりなくご利用いただけたかと思います。 その上で社内の開発環境においては様々な恩恵を得ることができたので、結果は成功と言っていいと思います。 しかしながら、その道のりはお世辞にもうまくいったことばかりではなく、反省すべきことも多々ありました。 アップデート作業には壁とも言えるような問題がいくつもありましたが、それはfreee会計が8年以上開発され
環境 Ruby 2.5.0 Rails 5.2.0 業務的なコードを書いていると、どう工夫しても複雑なSQLに行き着く時はある。 そもそもunionを使うくらいならば ・orで代替できないか ・分割でSQLを発行した方が可読性やパフォーマンスが上がらないか 等々を検討すべきだが、そうはいってもunionを使う場面というのはあると思う。 ということでunionの実装だが、いざunionを実装しようと思ってもネット上ではarel_tableを使ったり複雑めな実装で可読性が低いものが多かった。 (arel_tableは可読性が著しく下がる場合が多いので個人的には使いたくない) そこで紹介するのがactive_record_unionというgem。 使い方はいたってシンプル。 Gemfileにgemを追加して
[Rails]ActiveRecordで、whereで指定した順番通りに結果をソートしたい時どうするか
Rails 3.1 以降で良く使われるようになった therubyracer ですが、最近、これを含む bundle install がやたらと時間がかかったり、あるいはそもそも失敗してしまう、という事象が多数報告されています。 解決方法 以下の三つの方法が基本的な解決方法です。 その0 (※ 2013/1/11 追記) Gemfile にて、libv8 3.11 系を使用することを明記します*1 *2 gem 'therubyracer', '0.11.1' gem 'libv8', '~> 3.11.8.13' その1 Gemfile にて、 therubyracer のバージョンを 0.11.0beta8 に戻します gem 'therubyracer', '0.11.0beta8' gem 'libv8' その2 Gemfile にて、 therubyracer のバージョンを 0
Rails4.1系のプロジェクトを作ってみようと思ったら、therubyracerとlibv8のバージョンによる組み合わせが悪くてハマったので、メモとして残します。 環境 Ubuntu 12.04.5 LTS ruby 2.0.0p353 (rbenvでインストール) Rails4.1.6 (執筆時点で4.1系最新) $ ruby -rubygems -e 'puts Gem::Platform.new(RUBY_PLATFORM)' x86-linux 結論 先に結論を書きます。 Gemfileに以下のようにtherubyracerとlibv8のバージョンを指定してbundle installすればよいようです。 gem 'therubyracer', '= 0.10.2', platforms: :ruby gem 'libv8', '= 3.3.10.4' 環境によってどのバージョン
railsプロジェクトを新しく作成する際に実行する「rails new」のオススメ手順を、会社の先輩に教えていただいたのでメモ。 前提 Rubyインストール済み アプリケーション名:rails-app-name 手順 railsアプリケーション用のディレクトリを作成する。 →作成したディレクトリに移動 $ mkdir rails-app-name $ $ cd rails-app-name $ $ pwd /Users/maetoo11/workspace/rails-app-name $ $ ls -l $ railsアプリケーション用ディレクトリでbundle initを実行し、Gemfileを作成する。 $ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15] $ $ bundle init Writin
241: 簡単なOmniAuth (view original Railscast) Other translations: Other formats: Written by Naomi Fujimoto 数週間前、エピソード235[動画を見る, 原文を読む]と236[動画を見る, 原文を読む]でOmniAuthについて説明しました。OmniAuthは、Twitterなどのサードパーティによる認証サービスを自分のRailsアプリケーションに統合することを可能にします。これらのエピソードで提示したシナリオでは、アプリケーションにすでにユーザ名とパスワードを管理するしくみ(この場合はDevice)が存在しているところにOmniAuthを統合するという、どちらかというと複雑なものでした。また、ユーザごとに複数の認証方法を提供していました。このような特別な要求がないのであれば、OmniAut
2012年09月19日10:58 Ruby RubyistならデバッグにはPryのbinding.pryがおすすめ Pry("ぷらぁい" と発音します)はirbをもっと便利にしたものでRubyistならぜひ使うべきなgemです。しかもインストールはたったこれだけと非常に簡単です。 # pry-docは無くてもまぁいいですが、いろいろ調べられるので入れとくと良いでしょう。 gem install pry pry-doc Pryを使うとどういうことが出来るのかについてはこちらの動画をご覧ください。 #280 Pry with Rails - RailsCasts さて、この動画の中でも説明されていますがbinding.pryと書くことで任意の場所にブレイクポイントを設置することができます。ブレイクポイントを設定しておけば、処理を実行した際にそこで止まって自動的にPryコンソールが立ち上がるため
https://github.com/cookpad/arproxy http://rubygems.org/gems/arproxy これは何? Arproxyを使うと、ActiveRecordが発行したSQLがDB Adapterによって実行される直前をフックすることができます。これによって、カスタマイズしたクエリログを出力したり、どこからクエリが発行されたのかをトレースしたりすることができるようになります。 Arproxyでは、DB Adapterのフック処理を以下のように定義します。これはクエリが実行されるたびにバックトレースを出力する例です。*1 class QueryTracer < Arproxy::Base def execute(sql, name=nil) Rails.logger.debug sql Rails.logger.debug caller(1).join(
Rubyをさわり始めた時に戸惑ったインスタンス変数やクラスインスタンス変数なんかのためのチートシート。変数、クラス、モジュールの使い方についてざっとまとめてみた。RailsでGemばっかり使ってると忘れるんだよなー。 登場人物はこんな感じです。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 9
RubyにはGemと呼ばれるサードパーティのライブラリが豊富に存在します。 Gemは大変便利なもので、こういう機能ほしいなと思った際に The Ruby Toolbox や RubyGems.org や Google で検索すると大抵誰かがその機能を持ったGemを作っていたりします。 gemを利用するのも、RubyGems.orgに登録されているものならば と入力することで利用可能となります。 Gemはだれでも簡単に開発でき、審査無しですぐに公開できるため、日々大量のGemたちがRubyGems.orgに登録されています。反面、長年保守されていないGemや品質の低いGemも大量にRubyGems.orgに登録されているのが現状です。 同じ機能を持ったGemも大量に登録されていたりして、どのライブラリを利用してよいのか迷う事も多々あります。 今回は弊社プロジェクトで実際に利用している、便利な
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く