プログラミング -> 言語 -> Ruby

Legato と Tr4n5l4te を一緒に使うと ArgumentError になるとき

背景 以下の二つの gem を同時に使う場合です。

Twitter の gem で ユーザ を取得する際はなるべくバルクで取得する

Twitter の gem 理由 Rate Limits があるから。 方法 方法は簡単です。ツイートの取得の際に users メソッドを用いればよいです*1。引数として配列を与えます。 補足 一度の API を叩いて得ることができるユーザオブジェクトの個数の上限は 100個であること…

Twitter の gem で ツイート を取得する際はなるべくバルクで取得する

Twitter の gem 理由 Rate Limits があるから。 方法 方法は簡単です。ツイートの取得の際に statuses メソッドを用いればよいです*1。引数として配列を与えます。 補足 一度の API を叩いて得ることができるツイート個数の上限は 100個であることには注意し…

Twitter の gem で ユーザ の情報を取得するときに注意すること

一言で ユーザを指定するときに「アラビア数字」を用いる場合、「文字列」なのか「数値」なのかを意識的に区別する。

Ridgepole を用いて データベース の スキーマ を Git で管理する

Ridgepole こちらです。 データベースの構造の履歴を取る Ridgepole はマイグレーションツールとしての側面が強いですが、データベースのスキーマを取得するツールとしても便利です。 実行時のオプションに --export をつけるだけで指定したデータベースのス…

MiniMagick を用いて Ruby で ImageMagick (GraphicsMagick) を扱う

MiniMagick これです。RMagick はしばらくメンテがされていないようなので、現在ではこちらが選択肢になるのではないでしょうか。

Sidekiq では キーワード引数 は使えない(今のところ)

結論 Sidekiq では キーワード引数 は使えない(今のところ)。 現象 知見 注意 perform の引数としてだけではなく perform 内のメソッドでもキーワード引数が使えません*1。 *1:はず

Ruby 2.5.x において mail gem で POP3 に接続できない(FrozenError が出る)場合

結論 これが全てです。

Whenever は スケジュールファイル の場所が異なれば crontab をマージしてくれる

Whenever これです。Whenever is a Ruby gem that provides a clear syntax for writing and deploying cron jobs. 同じユーザが Whenever を複数実行したとき foobar というユーザが schedule_a.rb を whenever --update-crontab したとします。その上でさ…

Capistrano で ndenv を使う

結論 gem があります*1。 *1:感謝しかない

Capistrano で Exception while executing ...... Permission denied (SSHKit::Runner::ExecuteError) でハマった話

背景 かなり特殊な経緯です。 以前はデプロイ先のユーザは root でデプロイしていた それを一般ユーザに変えようとした そうすると表題のエラーが出た SSHのログインは問題ない

Sidekiq で Redis の namespace が切れなくてエラーになる場合

状況 こんなエラーが出たときです。 cannot load such file -- redis/namespace 結論 redis-namespace を入れる(gem)。 解答 公式ドキュメントにしっかりと書いてあります。 あとこの Issue にも。

Ruby で名前付きキャプチャを用いる際には正規表現オブジェクトを使わない

結論 大丈夫な例 /(?<foobar>[a-z]+)/ =~ 'abcdefg' puts foobar #=> abcdefg だめな例 regexp = /(?<foobar>[a-z]+)/ regexp =~ 'abcdefg' puts foobar #=> undefined local variable or method `foobar' for main:Object (NameError) 感想 そりゃそうなのかな、という感想</foobar></foobar>…

Sidekiq でジョブの並列実行数を制限する

結論 sidekiq-limit_fetch を使う。

「TLで集めた顔文字とか」を収録した Google 日本語入力 の辞書ファイルを作りました

はじめに 以下の記事の分家です。

Google 日本語入力 の辞書で同じ「よみ」に200語以上の単語を登録しても変換できない

結論 標題のままです。具体例を見てもらったほうが早いかと思います。

Failed to open TCP connection to https://www.example.com:80 (getaddrinfo: Name or service not known) (SocketError) のようなエラーが出たとき

Ruby です。 一つの解決法 誤っている例 MyApplication::Client.new( host: 'https://www.example.com', port: 80, username: 'MY_USERNAME', password: 'MY_PASSWORD', use_ssl: true, ) 一見誤りはないように見えます(見えました)。結構ハマりました*1。…

Twitter の gem でツイートに埋め込まれた URL を t.co 形式で取得する

結論 Tweetオブジェクトの uris メソッドを用いた戻り値*1の要素に対してさらに url メソッドを用いる。 具体例 以下のツイートを例とします。 【イベントレポート】Intel、最大5GHz達成のCore i7-8086Kを6月8日から発売... (71 users) https://t.co/PUbnmOl…

Rails で ES6 のコンパイルが失敗する場合

エラーメッセージ Uglifier::Error: Unexpected token: name (foobar_foobar). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true). 結論 config/environments/production.rb を以下のように書き換えましょう*1。 変更前…

Rails で複数のデータベースを扱う

結論 ツラミがある。 答えはほぼこれかと [Rails]複数のデータベースに接続する - Qiita 上記からのリンク記事 Rails で複数 DB の migration をする方法の調査と考察 - Qiita https://qiita.com/1990kawa/items/1712e261f155e34459ae

Slim で link_to の中に iタグ を埋め込む

結論 安直にこれで。 = link_to 'リンクです!<i class="material-icons">link</i>'.html_safe, 'https://example.com' 備考 ブロックを使うとごちゃごちゃしちゃうので、html_safe メソッドを使っていることを認識した上でこれで良いかと思います。 参考

Rails を起動したら Cannot load `Rails.application.database_configuration`: (NoMethodError) が出てハマった

結論(の一つ) database.yml の中の記述で、コメントの中に erb の書式で記述しているものがあり、さらにその返り値が例外になるものがあるとき標題のエラーが出る。

Rails での <video> タグの書き方

結論 video_tag を使う 具体例 your_video_name.mp4 という動画ファイルを app/assets/videos/your_video_name.mp4 に置いた場合です autoplay と loop をオプションで指定してます <%= video_tag 'your_video_name.mp4', autoplay: true, loop: true %> オ…

RSpecでマイグレーションをスキップさせる方法

結論 spec/rails_helper.rb の ActiveRecord::Migration.maintain_test_schema! をコメントアウトする # ActiveRecord::Migration.maintain_test_schema! 背景 既存のデータベースを読み出し専用で扱う場合にこうしました*1。 *1:レアケースでしょう

RSpec で response.body に JSON が入っていて欲しいけど空っぽで返ってくる場合

結論 render_views を実行する。 例 describe Api::UsersController do render_views describe... 背景 Jbuilder を使って遭遇しました*1。 参考 http://konifar.com/1198 *1:異論はあると思いますが……

Capistrano で Rails をデプロイする際に db:migrate をしない方法

結論 /Capfile(の一部)を以下のように記述する。 # require 'capistrano/rails' require 'capistrano/bundler' require 'capistrano/rails/assets' # require 'capistrano/rails/migrations'

Rails の production 環境 で unicorn に直アクセスした際に画像が表示されない場合

結論 config/environments/production.rb 内の以下の記述を書き換える。 config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? 上記の記述を以下のようにする。 config.public_file_server.enabled = true

Rails 5.2 の production 環境を Capistrano でデプロイしようとして Missing `secret_key_base`... などと怒られたとき

結論 config/master.key をデプロイする必要がある*1。 解決方法(の一つ) set :linked_files, 'config/master.key' という行をデプロイ設定のファイルに追加して、master.key ファイルを shared/config/master.key の場所に置けばよいです。 備考 環境変数…

Rails 5.2 の credentials.yml.enc に登録してあるデータを呼び出す方法

前提 $ rails credentials:edit で編集した内容が以下のとおりであったとします。 # Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies. secret_key_base: 1234567890 my_api_key: abcdefg foo: bar: hogeh…

Ruby で Timeクラス の日時を UTC で取得する

結論 Timeオブジェクトの utcメソッド を用いる。 実例 Time.now #=> 2018-05-16 17:40:28 +0900 Time.now.utc #=> 2018-05-16 08:41:02 UTC

Powered by はてなブログ