タグ

Rubyとrubyに関するbuty4649のブックマーク (122)

  • Ruby 3.2 のIRBの新機能 - Qiita

    これはRubyアドベントカレンダー2022の22日目の記事です。 binding.irb のすすめ 8年前に 今更聞けないpryの使い方と便利プラグイン集 という記事を書き、そこから長い間 binding.pry を愛用していた。binding.irb も binding.pry も使ったことがないよ、という人はご一読をお勧めしたい。 当時PryにあったIRBに対する優位性のうち、時間が経っても常に使い続けた機能といえば binding.pryの存在、$ (show-source)、@ (whereami)、ls とその -G (grep) オプション、デバッグ機能 (要pry-byebugプラグイン) という感じで、他はまあたまに使うかもねくらいの感じになったのだが、なんとこれらはRuby 3.2ではIRBで全て使えるようになった。その上、Gemfileに何も書かなくてもデフォルトで使え

    Ruby 3.2 のIRBの新機能 - Qiita
  • Rails appをRubyコードの改善だけで50%以上高速にした話 - Money Forward Developers Blog

    この記事は Money Forward Engineering 2 Advent Calendar 2022 18日目の投稿です。 こんにちは。マネーフォワード関西開発拠点でマネーフォワード クラウド会計Plus (以下会計Plus)のエンジニアをしているぽっけです。 この記事では、私が行った高速化について紹介します。 私は最近Railsアプリケーションの高速化を行っており、ある画面のレスポンスタイムを50%以上削減しました。そしてこの改善はRubyレベルの変更のみで達成しました。 この記事での「Rubyレベルの変更のみ」は、MySQLやRedis、Web APIなどへのアクセスには全く手を入れず、Rubyのプロセスが消費する時間のみを変更した、ということを意図しています。 MySQLなどへのアクセスは通常ボトルネックになりがちな箇所です。今回そこに手を入れずに高速化を達成できたのは、1つ

    Rails appをRubyコードの改善だけで50%以上高速にした話 - Money Forward Developers Blog
  • カスタムCopでリファクタリング

    RuboCopのカスタムCopを書いてリファクタリングを行う話として、丁度良い事例があったので紹介します。 改善したいコード 仕事先のRailsアプリを眺めてみると、昔から慣習的に次のようなコードが書かれていることが分かりました。 module A extend ::ActiveSupport::Concern included do def foo end def bar end end end 来は、特別な理由が無い限り次のように書かれるべきコードです。 module A def foo end def bar end end これは後から分かったことですが、このようなコードはファイル数で言うと数百件、メソッド定義数で言うと千件弱あるようでした。 用意したカスタムCop そこで、RuboCopのカスタムCopを書いて、このコードを自動修正することにしました。詳しい書き方についてはここ

  • 既存のgemにRBSで型定義を書く - kymmt

    RBSの練習としてhatenablogというgemの型定義をRBSで書いた。 https://github.com/kymmt90/hatenablog/blob/v0.8.0/sig/hatenablog.rbs まだ該当gemのsigディレクトリに置いているだけだが、やったことを書いておく。 作業の流れ Ruby 3.0をインストールするなどしてrbs、typeprofは使える状態になっているとする。 TypeProfで型定義ファイルの雛形を生成する Steepを設定する rbs collectionでサードパーティgemの型定義を導入する steep checkを実行してエラーを確認する 型定義やコード体を修正し、エラーを解消する CIでSteepを実行する ディレクトリ構造 次のようなディレクトリ構造とした。 . ├── Steepfile ├── lib │   └── (ge

    既存のgemにRBSで型定義を書く - kymmt
  • 2021年にmrubyを始める皆さまへ - ローファイ日記

    2021年3月5日に、mruby 3.0.0 のリリースがされました。おめでとうございます! mruby.org これに関連してなのか、mrubyをこれから始めようとか、ここのところどうなっていますかという質問をちょくちょく受けたり、ツイートを拝見したりするようになりました。 一方で、どうしても情報が古い、あるいは多くのmgemのメンテナンス状況が悪いように見える、などの初学者にとっては難しい状況が広がっており、厳しい気持ちになったり、厳しい感想を述べたりされている方もいるように思います。そして、その感想中には誤解も含まれているようです。 ここでいったん、少しでも「心構え」ができるように、これから触ってみる方々に対しての自分の考えをまとめておこうと思いました。 (さらにいうと、基的に原稿はいちユーザ、それもWebインフラに関わるユーザとしての解釈なので、Matzをはじめとした他のmru

    2021年にmrubyを始める皆さまへ - ローファイ日記
  • Ruby 3.0.0 リリース

    Posted by naruse on 25 Dec 2020 Ruby 3.0系初のリリースである、Ruby 3.0.0 が公開されました。 これまで、Ruby3に向けてパフォーマンスの改善、並行処理、静的解析という3つの目標を掲げて、活発に開発が行われてきました。特にパフォーマンスの改善については、Ruby 3x3 として「Ruby3はRuby2の3倍速くする」ことを目指してきました。 Ruby 3.0では開発の指標の一つとしてきたOptcarrotベンチマークで3倍を達成するとともに、以下のような取り組みが行われています。 benchmark-driver.github.io/hardware.html に書かれている環境で計測されました。 8c510e4095 が Ruby 3.0 として使われています。環境やベンチマークによっては3倍にならないかもしれません。 Ruby 3 では

  • Ruby競プロTips(基本・罠・高速化108 2.7x2.7)

    計測方法は、(10**6).times{ }のような最小限のコードです。 実際、制限時間が2秒だとして、10の7乗台前後から、想定解法でも厳しくなってくる印象です。 それ以前の1,000,000回(10の6乗)で2秒超えてTLEするなら、自分の書いたアルゴリズムを疑いましょう。 今のC++は10の7乗だと「余裕をもって間に合う」レベルらしいので、C++と比べるとRubyは10倍遅い感じです。 競技プログラミングでは、問題に与えられた要素数も 方針・アルゴリズムを考えるヒントになるので、このあたりの感覚はもっておくとよさそうです。 高速化手法のまとめ・見方 先に高速化のまとめがあった方が親切かと思い、簡単にまとめておきます。 (まとめの方にしか書いてないのもあります……) 記事は、アルゴリズムの話も少し混じっていますが、アルゴリズムはRubyに限らないので、ほぼ触れてません。 「アルゴリズ

    Ruby競プロTips(基本・罠・高速化108 2.7x2.7)
  • 週刊Railsウォッチ(20200602後編)JSONストリームパーサーyajl-ruby、ruby-buildとopenssl、GoogleのCloud SQL、Rubyと機械学習ほか|TechRacho by BPS株式会社

    2020.06.02 週刊Railsウォッチ(20200602後編)JSONストリームパーサーyajl-rubyruby-buildとopenssl、GoogleのCloud SQLRuby機械学習ほか こんにちは、hachi8833です。例のRuby 3.0キーワード引数変更のつらみをmameさんがまとめてくださいました🙇。 I've posted a (current) summary of pain points about Ruby 3.0 keyword argument change. We'd still like to hear your opinions.https://t.co/6AijkjqtSW — Yusuke Endoh (@mametter) June 2, 2020 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などに

    週刊Railsウォッチ(20200602後編)JSONストリームパーサーyajl-ruby、ruby-buildとopenssl、GoogleのCloud SQL、Rubyと機械学習ほか|TechRacho by BPS株式会社
    buty4649
    buty4649 2020/06/03
    週間Railsウォッチデビューしていた!
  • Rubyで別のコマンドをラップしたい時、ptyライブラリが便利 - ローファイ日記

    library pty (Ruby 2.2.0) pty とは、擬似端末(Pseudo tTY)を扱うライブラリ。 典型的には以下のように使う。 require 'pty' status = nil PTY.spawn("for i in $(seq 1 10); do echo progress $i; sleep 1; done") do |pty_out, pty_in, pid| pty_in.close while l = pty_out.gets puts "PTY: #{l}" end status = PTY.check pid end # PTY: progress 1 # PTY: progress 2 # PTY: progress 3 # ... # PTY: progress 10 #=> nil p status #=> #<Process::Status: p

    Rubyで別のコマンドをラップしたい時、ptyライブラリが便利 - ローファイ日記
  • Ruby 2.6.3 リリース

    Posted by naruse on 17 Apr 2019 Ruby 2.6.3 がリリースされました。 このリリースでは日の新元号「令和」のサポートを追加しています。 具体的には Unicode のバージョンを 12.1 beta に更新する (#15195) とともに、date ライブラリを更新しています (#15742)。 その他いくつかの不具合修正も含まれます。詳細は commit log を参照してください。 ダウンロード https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.3.tar.gz SIZE: 16784748 bytes SHA1: 2347ed6ca5490a104ebd5684d2b9b5eefa6cd33c SHA256: 577fd3795f22b8d91c1d4e6733637b0394d4082db65

  • Rails 4, 5, 6における Security Fix について - Pepabo Tech Portal

    セキュリティ対策室の mrtc0 です。 セキュリティ対策室では、サービスで利用しているパッケージやライブラリ等の脆弱性情報を日々収集し分析しています。 そこで今回は 2019/3/14 に公開された次の3つの Rails の脆弱性の詳細をまとめたいと思います。 CVE-2019-5418 File Content Disclosure in Action View CVE-2019-5419 Denial of Service Vulnerability in Action View CVE-2019-5420 Possible Remote Code Execution Exploit in Rails Development Mode CVE-2019-5418 : File Content Disclosure in Action View ディレクトリトラバーサルです。 rend

    Rails 4, 5, 6における Security Fix について - Pepabo Tech Portal
  • 男女の参加バランスが良く、託児室があって、懇親会でぼっちにならないRuby勉強会を開催しました #tokyogirlsrb - give IT a try

    はじめに このブログでも何度か紹介してきた「女性も参加しやすい(でも女性限定ではない)Ruby勉強会」、TokyoGirls.rb Meetupの記念すべき第1回を2019年3月2日に開催しました。 TokyoGirls.rb Meetupを開催しようと思った目的や背景は以前書いたこちらのエントリにまとめてあります。 今回のエントリでは、「男女の参加比率」「無料託児室」「懇親会のぼっち対策」という3つのポイントに注目しながら、当日の様子や運営上の工夫を書いてみたいと思います。 【もくじ】 はじめに ポイントその1. 「男性ばかり」でも「女性ばかり」でもない男女比率になりました 参加者の感想(と僕自身の感想) 男性エンジニアにも何かしらの気づきを与えられる勉強会でした 「自分は男性だし、興味がないなあ」という方も ポイントその2. 無料の臨時託児室を提供しました なかなか大変だった臨時託児室

    男女の参加バランスが良く、託児室があって、懇親会でぼっちにならないRuby勉強会を開催しました #tokyogirlsrb - give IT a try
  • サーバーのプロビジョニングをmitamae + hochoでやる方法 - Qiita

    mitamaeとは Chefに比べ、よりシンプルかつ依存(chef server, cookbook, berkshelf, data_bags)が少なく実行できるItamaeというツールがあるんですが、mitamaeはmrubyを使うことでそこから更に依存(Rubyインタプリタ, RubyGems)を減らしシンプルにしたツールです。 歴史: https://k0kubun.hatenablog.com/entry/itamae-mruby https://k0kubun.hatenablog.com/entry/mitamae 何故mitamaeは便利なのか itamae sshを使うとサーバーに何も入ってない状態のまま気軽にサーバーをプロビジョニングできるため非常に便利なのですが、itamae ssh は各コマンドごとにssh越しの通信が発生してしまい非常に遅く不快なため、通の間ではo

    サーバーのプロビジョニングをmitamae + hochoでやる方法 - Qiita
  • The ultimate PHP Security Checklist

    Product { this.openCategory = category; const productMenu = document.querySelector('.product-menu'); window.DD_RUM.onReady(function() { if (productMenu.classList.contains('show')) { window.DD_RUM.addAction(`Product Category ${category} Hover`) } }) }, 160); }, clearCategory() { clearTimeout(this.timeoutID); } }" x-init=" const menu = document.querySelector('.product-menu'); var observer = new Muta

    The ultimate PHP Security Checklist
  • capistranoでデプロイ先にユーザ指定してwheneverを適用させたい - kumak1’s blog

    この記事は Pepabo Advent Calendar 2015 - Qiita の19日目の記事です。 capistrano、Ruby で簡潔によしなにしてデプロイしてくれるので大変便利ですね。拡張ライブラリも豊富ですし Ruby の経験がほとんどなくてもそれとなく記述できて素晴らしいです。(ぺちぱーなもので・・) whenever も cronRuby で書けるっていいですね。バージョン管理できるし、レビューも受けやすいし、なにより crontab -r がもう怖くないw 基的にすんなりと設定できるのですが、掲題の「capistranoでデプロイ先にユーザ指定してwheneverを適用」の時にちょっと詰まったので、備忘録がてらに記事にします。 なんでユーザ指定したいの ユーザを分ける事自体に疑問を持つ方は、こちらの記事を読むと良さそう。 用は、デプロイする人はデプロイするだけ

    capistranoでデプロイ先にユーザ指定してwheneverを適用させたい - kumak1’s blog
  • mrubyでブートローダを書けるようにしました - syuu1228's blog

    カーネル/VM@関西7回目でお話したネタです。スライドはこちら: UEFI時代のブートローダ from Takuya Asada 既にmrubyはUEFIへ移植されています(覚え書き: mruby on EFI Shell)。 また、EFI StubカーネルをUEFIアプリから実行するのは非常に簡単であることが分かっています(実際にソースコードを書いて実験しました)。 以上のことから、「mrubyにEFI Stubカーネルのファイル名を指定したら実行するAPIを足せば、mrubyでブートローダが実装可能になるに違いない」と考えました。 ただ面白いというだけでなく、mruby-socket・mruby-simplehttp-socketなどのmrbgemsを移植していけばブート処理を記述したmrubyスクリプトやカーネルそのものをHTTPから取得することが出来るようになり、簡単なスクリプトで

    mrubyでブートローダを書けるようにしました - syuu1228's blog
  • rbenv + ruby-build はどうやって動いているのか - takatoshiono's blog

    rbenv といえば 複数バージョンの Ruby を切り替えて使うための環境を提供してくれる便利なツールとして欠かすことのできないものですが、機会があってそれがどうやって動いているか調べたので、ここに書いておきます。また ruby-buildruby をインストールするためによく使われている(というか使ってない人いないのでは)rbenv のプラグインです。rbenv install というコマンドは ruby-build が提供しています。これについても一緒に書きます。 はじめに断っておきますが、間違ったことを書いているかもしれないのでその辺はご了承ください。また、将来 rbenv の変更によって変わってしまう部分もあるかもしれません。 また rbenv のドキュメントはとても充実しているので、それを読めばここに書いてあることはだいたいわかると思います。 もくじ rbenv のインス

    rbenv + ruby-build はどうやって動いているのか - takatoshiono's blog
  • http://blog.inouetakuya.info/entry/2014/06/08/194015

    http://blog.inouetakuya.info/entry/2014/06/08/194015
  • WebブラウザだけではじめるRuby/Railsプログラミング - Qiita

    これからプログラミングを始めてみたい人に向けて、Webブラウザだけですぐに使えるRuby/Railsのクラウド開発環境 (Nitrous.io) を紹介します。 Rails環境構築の壁 プログラミングを始めるためには、開発環境を構築する必要があります。RubyRailsの開発環境の構築方法はRails Girls インストール・レシピが参考になりますが、いくつかのソフトウェアをインストールする必要がありました。 RubyRails データベース (SQLite) エディタ (Sublime Text, TeraPad) ターミナル (iTerm, PuTTY) バージョン管理 (git) RailsInstallerは、これらのソフトウェアをワンクリックでインストールしてくれますが、最近は更新されておらずRuby1.9.3 + Rails 3.2とバージョンが古くなっています。なお

    WebブラウザだけではじめるRuby/Railsプログラミング - Qiita
  • Macのターミナルでビールが降る

    Macのターミナルでビールが降る 辛いことがあったときに,どうぞ. $ ruby -e 'C=`stty size`.scan(/\d+/)[1].to_i;S="\xf0\x9f\x8d\xba";a={};puts "\033[2J";loop{a[rand(C)]=0;a.each{|x,o|;a[x]+=1;print "\033[#{o};#{x}H \033[#{a[x]};#{x}H#{S} \033[0;0H"};$stdout.flush;sleep 0.01}' Gifzo 参考 Macのターミナルで顔が降る Let it Snow in the Terminal of Mac OS X with This Command