Ruby
GitHub - tomykaira/rspec-parameterized: RSpec::Parameterized supports simple parameterized test syntax in rspec.を使ってみます。 require 'rspec-parameterized' require './fizzbuzz' describe 'FizzBuzz' do using RSpec::Parameterized::TableSyn…
素直な気持ちで書くとexpect(fizzbuzz 1).to eq '1'に似た文がたくさん出てきます。 DRYにしたくなったので、テストデータをテーブルで定義してグルグルっとアサーションを回します。 require './fizzbuzz' describe 'FizzBuzz' do it do [ [0, ''], [1, '1'…
「1から100までの数に対して3で割り切れる数はFIZZ、5で割り切れる数はBUZZ、 3でも5でも割り切れる数はFIZZBUZZと表示する。それ以外の数は数字のまま表示する。」 describe 'FizzBuzz' do context '数が1より小さいとき' do it { expect(fizzbuzz 0).to eq…
チューニングするときボトルネックを探したいです。 ボトルネックの候補となる処理を実行したときにどれぐらいの時間が掛かかるのか計測したいです。 次の関数を作りました。 def elapsed_time_of(message = '') starting = Process.clock_gettime(Process::…
ある関数をチューニングするために、つぎのような計測用のスクリプトを作成しました。 require 'benchmark' annotations_collection = JSON.parse File.read(ARGV[0]) annotations_collection.each { _1.deep_symbolize_keys! } project = Project.find_by(i…
bundle initじゃなくて何でしたっけ? www.engineyard.com bundle gem heynow 全部デフォルトで作成すると次のようなファイルができました。 ►ls -R heynow/ heynow/: Gemfile README.md Rakefile bin heynow.gemspec lib sig heynow/bin: console setup hey…
def tengu_p(*args) args.each.with_index(1) { |msg, i| Rails.logger.debug '👺' * i + msg.inspect } end アプリケーション実行時もデバッグプリントできるように、Rails.loggerを使います。。
blog.magnolia.tech 実際、便利です。 自動テストの実行中にデバッグプリントすると、出力結果を探すのが大変です。 制御文字を使わなくても赤色で表示されるので、出力結果が簡単に見つかって便利です。 でも、毎回次のように書くのは面倒です。 特にIMEを…
解いてみた問題は次の2つです。 https://leetcode.com/problems/two-sum/ https://leetcode.com/problems/design-hashset/ 速く動くプログラムを書くために、データ構造とかアルゴリズムを考える力を求められる感じです。 今の時点の僕は「これを求めてなか…
最近、Rubyをはじめた人からRuby 2.5*1の環境で次のエラーが出たという相談を受けました。 rbenv: bundle: command not found The `bundle' command exists in these Ruby versions: 2.7.5 3.0.3 エラーメッセージ通りbundleコマンドがないので、gem install…
Rails 6.1の、特にテストのあるアプリケーションをbundleすると次のような警告がでます。 Post-install message from rubyzip: RubyZip 3.0 is coming! ********************** The public API of some Rubyzip classes has been modernized to use named pa…
rustでFizzBuzz - @ledsun blog で、rustのパターンマッチングを使ったFizzBuzzを書いたので、rubyでもパターンマッチ*1でFizzBuzzが書けそうな気がしてきました。 (1..30).each do case _1 in i if i % 15 == 0 p 'FizzBuzz' in i if i % 5 == 0 p 'Buzz' i…
world.hey.com めっちゃ長かったです。 すごく雑に言うと「OSSは癒やし。お金をもらってしまうと癒やしが仕事に変わってしまう」な内容のようです。 本当はDHH自身の体験を織り交ぜた、もっといい話なんですが、僕の理解力と表現力でフィルターするとそんな…
WSLっていうかUbuntuだと思います。 結論からいうと libsqlite3-dev libffi-dev を入れておきましょう。 libsqlite3-dev gem install rails -v 7.0.0.alpha2してrails newすると次のエラーがでます。 An error occurred while installing sqlite3 (1.4.2), a…
今年のクリスマスにリリースが予定されているRuby 3.1のPrview 1がリリースされました。 rbenv + ruby-buildを使って動かして見ます。 ruby-buildを更新します。 ledsun@MSI:~►cd .rbenv/plugins/ruby-build/ ledsun@MSI:~/.r/p/ruby-build►git pull remote:…
www.youtube.com で、紹介されているなかで brakeman bundler-audit を、試してみました。 どちらも使うのはめちゃ簡単です。 Gemfileに次のような記述を追加します。 group :development do gem 'brakeman' gem 'bundler-audit' end あとは bundle bundle e…
minitestをつかったRailsアプリケーションを5.0にアップデートするときに不思議な現象に出会いました。 bin/rails test は通るのに bin/rails test —verbose でエラーになる 不思議・・・です。 ~ bin/rails test Run options: --seed 4913 # Running: .....…
Railsのバージョンを上げようと思って、3年ぶりくらいにRails 4.2のアプリケーションに触りました。 テストコードがあるのですが、test-unitです。 この組み合わせを触るのが久しぶりなので苦戦しました。 コミットログを見る限り、3年前に自分でテストコー…
前提条件 マイクロサービスをdocker composeで動かしていました。 Ruby on RailsでできたAPIサーバーのRailsのバージョンを6.1.4.1に上げました。 するとAPIサーバーは 403 Forbidden を返すようになりました。 奇妙なことに、ホストOSからリクエストを送る…
kaigionrails.doorkeeper.jp 話の背景は Rails 7 はユニバーサルJavaScriptモジュールの夢を叶えるか? - @ledsun blog です。 内容 www.youtube.com 文字だとこんな感じです。 書きおこしではないです。 練習中に作ったトークスクリプトままです。 細部は違…
SPARQL::Client.new endpoint_url, endpoint_options のようにオプションのハッシュを渡している場所に、**をつけて次のように直しました。 SPARQL::Client.new endpoint_url, **endpoint_options このコンストラクタの実装は次の通りです。 https://github.…
www.youtube.com の手順で作成したRailsアプリケーションの動作を見てみましょう。 このRailsアプリケーションの http://localhost:3000/posts のHTML、特にheadタグを見ます。 Post一覧画面のheadタグ なかでも気になるのは次の行です。 <script type="module">import "applicatio</script>…
"Propshaft is an asset pipeline library for Rails. It's built for era where bundling assets to save on HTTP connections is no longer urgent, where JS and CSS is either compiled by dedicated Node.js bundlers or served directly to the browse…
RubyのDateからTimeへ移行する道程、いまここ - @ledsun blog で、RubyのTimeにパッチを投げると取り込まれやすそうだということがわかりました。 どうのような手順で、Rubyの修正、パッチの提出をすれば良いのでしょうか? Kaigi on Rails new と言う去年の…
Rails 7 αを試して、エラーで躓いているところ - @ledsun blogでCould not open library 'libvips.42.dylib': dlopen(libvips.42.dylib, 5): image not foundというメッセージを含むエラーが起きたので、ググったところ次のissueが見つかりました。 github.c…
www.youtube.com を真似て素振りしていきます。 rails new showtell 最初は--devオプションをつけて、ローカルに入っているRailsがインストールされて失敗しました。 cd showtell bin/rails g scaffold post title:string content:text bin/rails action_tex…
github.com 最初はBulmaはNode.jsを使ってコンパイルしないからとクローズされました。 カスタマイズする際はsassを使ってコンパイルするので再オープンされました。 CSSフレームワークインストール用のGemがRails本体から分かれたからなのか、結構柔軟に取…
RubyKaigiでRubyの改善のために、次の協力が求められていました。 youtu.be RubyのDateライブラリーのメンテナンスが行われていません。 Dateと同じ機能がほとんどTimeで提供されています。 strptime, parseなどはDateの機能が残っています。 この機能をTime…
benchmarksgame-team.pages.debian.net のスクリプトをチューニングします。 特に知見はないので、思いついた色々なパターンを試して、雰囲気を掴んでみましょう。 ソースコードはURLのみ載せます。 変更前 https://github.com/ledsun/nbody/blob/main/hoge.…
Ruby 3.0のJITのすごさを体験する - @ledsun blogのスクリプトは引数で計算回数を指定することができます。 5000万回計算するとJITありはなしの2倍近い速度になりました。 施行回数を減らすとどうなるでしょうか? ~ time ruby hoge.rb 500 -0.169075164 -0.…