Ruby
要旨 module M extend ActiveSupport::Concern included do scope :disabled, -> { where(disabled: true) } end class_methods do ... end end https://github.com/rails/rails/blob/main/activesupport/lib/active_support/concern.rb より 詳細 included …
要旨 [1] pry(main)> [1, nil, false, true].any? => true [2] pry(main)> [nil, false].any? => false 詳細 全てを検査したい場合は、 Enumerable#all? を使えば良い。 参考 docs.ruby-lang.org
要旨 [1] pry(main)> 1.1-1.0 => 0.10000000000000009 [2] pry(main)> require 'bigdecimal' => true [3] pry(main)> BigDecimal('1.1') - 1.0 => 0.1e0 詳細 1.1 - 1.0 の結果は、Float の場合は誤差が出てしまっている。これは2進数で計算するときに生じる…
要旨 disable-pry を入力してEnterを押すと、以降の binding.pry では止まらなくなる。 $ ruby test.rb 1 From: /private/tmp/test.rb:5 : 1: require 'pry' 2: 3: (1..100).to_a.each do |i| 4: puts i => 5: binding.pry 6: end [1] pry(main)> 2 From: /p…
要旨 # 10以上の数(=最低で10)が欲しい場合 [1] pry(main)> [3, 10].max => 10 [2] pry(main)> [15, 10].max => 15 関連 blog.dogwood008.com
要旨 # 10を超えない数(=最高で10)が欲しい場合 [1] pry(main)> [3, 10].min => 3 [2] pry(main)> [15, 10].min => 10
要旨 (0..10).to_a.map(&:to_s) => ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"] 詳細 「Proc展開」 "Proc coercion" 等の名前で呼ばれていることがあるが、特定の呼び名は決まっていないようだ。 参考 docs.ruby-lang.org
要旨 [1] pry(main)> p 'test' "test" => "test" 詳細 手っ取り早く表示させるのに便利。 参考 docs.ruby-lang.org
概要 {} === {} // => false 詳細 JavaScriptでの比較は、落とし穴が多い。詳しくは参考に挙げたページを見てもらえるとわかるが、 +0 === -0 が false になったりと良く知っていないとハマりがちである。 ではどうやって object 同士を比較すれば良いか、と…
要旨 user_id = params[:user_id].tap { |uid| p User.find(uid).name } contents = Content.made_by(user_id) ... 詳細 Object#tap は self 自身を返す。なので、ちょっと中身を覗いたりするのに便利。上記の例で言えば、 uid に self すなわち params[:use…
概要 変数に対してメソッドチェインの途中で String#capitalize 等の String クラスのメソッドが挟まる場合、変数の初期段階で Object#to_s を読んでおくと不用意に Nil#some_method が出てしまうことを回避できる。 詳細 Object#to_s は、 Object が nil の…
概要 %w[a b c d e].include?('c') == 'c'.in?(%w[a b c d e]) 詳細 Array#include? Ruby 標準のメソッド。一方、 Object#in? は Active Supportを require すると使えるようになるメソッド。 ただし、 Active Support全体を require する必要はなく、下記の…
要旨 ブロックを使うのがおすすめ。 詳細 Hash#fetch は、Hashに指定したKeyが存在する際に、そのValueを返すメソッドである。 このメソッドは、指定したKeyが存在しなかった際、デフォルト値を返すことができる。その際、デフォルト値の与え方は下記の2通り…
例えば、「特定の条件を持つユーザIDだけ欲しい」といった場合に有効。この時、 pluck を使うと戻り値は Array で、 select を使うと ActiveRecord::Relation が返る。 この時、 map を使うのは無駄なメモリを食ったり動作が遅くなったりするので、やっては…
RSpecの世界では、 let は遅延評価される。これは宣言した値が本当に必要とされる時まで評価を遅延するということを指す。具体的な例を持って説明する。 例えば下記のようなテストを行うとする。ここでは、あるAPIのエンドポイントにPOSTする際のステータス…
TL;DR 各言語での設定 Ruby ENV['SSL_CERT_FILE'] = PATH_TO_SSL_CERT_FILE Python import os; os.environ['CURL_CA_BUNDLE'] = PATH_TO_SSL_CERT_FILE この文書は誰向け? サーバサイドの開発者で、通信内容を覗きたい人 暗号化されていないhttpでの通信で…
- [Google Cloud Speech API](https://cloud.google.com/speech/)をサクッと試せる環境を作った - **[github: dogwood008/google_cloud_speech_recognition_sample](https://github.com/dogwood008/google_cloud_speech_recognition_sample)** - Dockerのコ…
Ruby 2.1 と 2.2 における、URI#parseの挙動の違い 症状 Ruby 2.1では、URIに使用できない文字(アンダースコア、アンダーバー)を含んだ文字列( http://abc_def.com/foobar/ ※1)をURI#parseに与えた際にURI::InvalidURIErrorの例外が発生する。 2015/08/15…
結論「gsubで正規表現を用いた置換を行う際、$1でグループの参照がうまくいかない場合は’\1’を使え」というお話。 $1, $2, ..., $nのかわりに\1, \2, ..., \nを使え。$1で良い場合Regexp#matchやString#matchや「=~」を使う場合は$1で参照できる。cool = 'co…
講演情報6/18(木)アイディアをカタチにする勉強会 〜アプリ開発からサーバサイド設計までの全貌〜 @ 渋谷 TECH LAB PAAK https://atnd.org/events/66892概要期限、目標などのゴールを決めて、真剣に取り組む自分でできないことは人を頼ろう「どう継続させる…
rails sを実行時に,「You should not use the `match` method in your router without specifying an HTTP method. (RuntimeError)」とエラーが出た際には,routes.rbに「match」メソッドが含まれていることが原因.例えば, root :to => 'thread#index' ma…
1. Gemfileを編集して,Rails3を使用するよう設定してある部分をRails4を使用するよう変更Rails3を使用する設定を gem 'rails', '3.2.XX'Rails4を使用する設定に変更 gem 'rails', '4.0.2'2. Rails等の依存関係を修正bundle install3. 正しく動作するか確認r…
1. ユーザの作成(Local)$ ssh root@(IPアドレス)# useradd (ユーザ名)# passwd (ユーザ名)# usermod -G wheel (ユーザ名) ←sudo可能にするため,sudo可能なグループに追加# visudo# %wheel ALL=(ALL) ALL%wheel ALL=(ALL) ALL# exit2. 鍵の追加(Local)$ ssh …
1. レポジトリ追加zypper ar http://download.opensuse.org/repositories/devel:/languages:/ruby/openSUSE_12.1/devel:languages:ruby.repozypper ar http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/openSUSE_12.1/devel:l…
1. ソースをダウンロード,展開$ wget https://mecab.googlecode.com/files/mecab-ruby-0.996.tar.gz$ tar xzvf mecab-ruby-0.996.tar.gz$ cd mecab-ruby-0.9962. インストール$ sudo vim /etc/ld.so.conf.d/mecab-0.996.conf「/usr/local/lib」を追加,:wq…
1. 依存関係を解決する[root@sakura ~]# yum -y groupinstall "Development Tools"[root@sakura ~]# yum --enablerepo=epel -y install libyaml libyaml-devel readline-devel ncurses-devel gdbm-devel tcl-devel openssl-devel db4-devel libffi-devel※htt…