www.ruby-lang.org docs.docker.comRuby 3.2 がリリースされて、WebAssembly や WASI が動くようになったのと、Docker Desktop に WebAssembly ランタイム(WasmEdge)が統合されたりしたので両方やってみたメモ。 公式 README ruby.wasm/README.md 依存 Dep…
Ruby 2.7.1 + Rails v6.0.3.2 + Redis Gemfile ... gem 'redis' gem 'hiredis' ... 開発環境用の設定config/environments/development.rb # Enable/disable caching. By default caching is disabled. # Run rails dev:cache to toggle caching. if Rails.ro…
メモ。AWS Lambda でランタイムに Ruby 2.7 を選択する。そのとき puts を使うと返却値は nil ではなくて、出力した文字数が返る。AWS Lambda # lambda_handler.rb require 'json' def lambda_handler(event:, context:) ret_puts = puts "foo!!!!!" puts "r…
配列内の要素が1ずつ増えているかどうかをチェックしたかったメモ。 [1, 2, 3, 4] #=> OK [1, 2, 4] #=> NG [4, 5] #=> OK [6] #=> OK [7, 8, 0] #=> NG 今回自分が出くわした場面では、要素内の値が0〜9ということが確定していたので、こんな解決方法を思い…
Rubyのprivateなセッタメソッドについてメモ。Rubyのprivateメソッドはレシーバを省略しないと呼べない仕様だけど、 末尾に「=」がつくセッタメソッドに限ってはself付きで呼ばないと動いてくれないようだ。 class Foo def foo bar=("bar=") # NG(ローカル変…
Ruby2.4.3のリリースに、Net::FTPの脆弱性の修正をした、というのを見た。CVE-2017-17405: Net::FTP におけるコマンドインジェクションの脆弱性について ローカルのファイルを開くために、それぞれ内部で Kernel#open を使用しています。しかし、もし localf…
何をしたか Railsのconfig/routes.rbの書き方にいい加減嫌気がさしたので単純を羅列する方法に変えた。 自分一人ならレールに乗るのもいいけど、複数人でさわるならわかりやすさ重視の方がいいとおもう。 変更前 Rails.application.routes.draw do root to: …
配列の中のものに同じ処理を施すんだけど、先に奇数を処理してから、偶数を処理したい。 numbers = [1,2,3,4,5,6,7,8,9,10] numbers.select{|n| n.odd?}.each{|n| puts n*n} numbers.reject{|n| n.odd?}.each{|n| puts n*n} Array#rejectとかselectでは、条…
よく変数に数を足し込むときには、+=を使う。 これと同じように掛け算、割り算も*=、/=が使えるけれど、この場合の四則演算の優先順位が気になったのでやってみたメモ。 a = 120 a /= 12 + 3 puts a #=> 8 # 120 / (12 + 3) = 8 # 120 / 12 + 3 = 13 b = 12 …
Capistrano3を使ってデプロイを行っているアプリがあったのだけれど、途中でgitのリポジトリを変更しなければならなくなってしまったので、そのときのメモ。config/deploy.rbのrepo_urlを変更する。 diff --git a/config/deploy.rb b/config/deploy.rb index…
Sidekiq::Workerをincludeして使っているクラス内のperformメソッド内で自分のJobIDを知るには、self.jidで取れる。 class MyWorker include Sidekiq::Worker def perform job_id = self.jid puts job_id # some codes end end job_id = MyWorker.perform_as…
よくわからなくなったのでメモ。 メソッドを作ったのでテストを書く。 class H def hoge(flag) if flag "hogehoge" else "hoge" end end end describe H do describe "#hoge" do subject{ H.new.hoge(flag) } context "when flag is true" do let(:flag){ tr…
http://railsskeleton.herokuapp.com/いつもスケルトンのつづりを間違えてしまう。
メモ。 Rubyには単項演算子が3つある。+と-と~だ。 ただし、これらは二項演算子と明確に区別されるので、オーバーライドするときには記号に@をつけて定義する。 class Fixnum def -@ -2 * self end end i = 5 puts -i #=> -10 ちなみに、左辺に値が存在しな…
昨日のテストを、レンダリングエンジンにWebkit(QtWebKit)を使ってテストする。 こちらのいいところは、完全にheadlessなのでモニタがない環境でもテストしやすいところ。Gemfile group :test do gem 'rspec-rails' gem 'capybara' gem 'selenium-webdriver'…
Macの環境で実際にブラウザを使ったテストがしたかった。 iOSビルドの関係でMacの上にJenkinsが載っていることもあるので。 FireFox インストール。 Gemfile 以下を追加して、bundle install。 group :test do gem 'rspec-rails' gem 'capybara' gem 'seleni…
http://www.sinatrarb.com/intro.html#Error%20Handlingこちらを見ると例外はRackオブジェクトのsinatra.errorに入っているとあるが、ブロック引数としても受け取ることができる。 (バージョン1.4.4で確認) require "sinatra" # developmentモードでもデバッ…
https://travis-ci.org/rightgo09/chamber 初めてTravis CI使った。CIさせるための.travis.ymlの設定ファイルの書き方があって 「またこういうルールを覚える作業が始まるお・・・」とダウナーにTravis CI: Building a Ruby Projectを見たらデフォルトでbund…
https://github.com/rightgo09/chamber外国人と英語でチャットしているときに、よく「ん?」となって辞書を引くのがしんどくなったので 翻訳してくれるbotをつくった。元ネタはこれ。 http://matome.naver.jp/odai/2136876483489139901Microsoftの翻訳APIが…
今日突然Jenkinsのあるジョブがエラーになってしまった。↓失敗してたジョブのコンソール表示 [error]: Missing 'redcarpet' gem for Markdown formatting. Install it with `gem install redcarpet`でもその直前にbundle installはしていて、そこにちゃんとr…
メモ。ensureはちゃんとnextとかbreakも捕捉してくれる。さすがensure。 %w[ normal raise next break ].each do |w| puts "===============================" puts "w: #{w}" begin raise if w == "raise" next if w == "next" break if w == "break" rescu…
知らなかったのでメモ。 こう書くと users = [ id: 123, name: "Yamada", age: 21, ] こうなる。 p users #=> [{:id=>123, :name=>"Yamada", :age=>21}]
FactoryGirl.createは最終的にsave!メソッドが呼び出されるけれど、 Sequelにはsave!はなくsaveしかないのでそれを使うようにFactoryGirl側に教えなければならない。こんな感じのエラーが出るので Failure/Error: Unable to find matching line from backtra…
社内レビューで教えてもらったのでメモ。 a = [1,2,3,4,5,6,7,8,9,10] b = [ 2,3, 5, 7, 11,12,13,14] p a & b #=> [2, 3, 5, 7] Array#&を使うと簡単だった。ちなみに最初に僕が書いたのは2つの配列をeachで回して(以下略
見ました。 r7kamura/autodoc · GitHub Rails でつくる API のドキュメントを自動生成してくれる autodoc がすごい - 彼女からは、おいちゃんと呼ばれています テストしたらそれがドキュメントになるの素晴らしいとおもいます。 で、触ってみてのメモ。 バー…
窓際に追いやられました。。 https://paiza.jp/poh/ec-campaign 「素直に頭から組み合わせてもいけるんじゃね?」「一回組み合わせたらキャッシュはしてるしw」と思って最初は愚直に書いてみましたが、見ての通り甘かったです。 その後、なんか登録すれば模…
http://sequel.jeremyevans.net/rdoc/files/doc/migration_rdoc.htmlSequelのマイグレーションファイルは2つの命名規則から選ぶことができる。 インクリメンタルな数字をつける方法と、タイムスタンプをつける方法の2つ。両方とも管理するデータベース内に…
最近何か作るときは、本当に短い(寿命とかサイズとか)APIは、Sinatra一枚岩で簡単に書けるからそこそこ使うAPIは、Padrino最初から綺麗に分離できてるからHTML吐き出す必要があるときは、Railsassets compileが楽だからという感じになってる。あとは、アクテ…
サブ垢で作ってたブログは置いてきた! PerlerのRuby日記 仕方ないからMovableType形式でインポートした! なんではてなの日記データ形式でインポートできないのか謎だ! 同じはてなのブログなのに! でもインポートはちゃんとできた! これからはこちらでよ…
http://sequel.rubyforge.org/rdoc/files/README_rdoc.html Column references in Sequel Sequel expects column names to be specified using symbols. はまったのでメモ。 条件に沿って"field1", "field2"のようなフィールドにアクセスするときに 間違って…