はじめに (背景) 昨年のクリスマスにRuby 2.7.0がリリースされました。 Ruby 2.7は今年リリース予定のRuby 3への移行を見据えたバージョンであり、多くの新機能や変更点があります。そこで、弊社が企画制作する『Babyプラス』のRailsアプリをRuby 2.6.5 -> 2.7.0に上げて動かしてみたところ、約1,000件のテストケース実行に対して6件のエラーと2,700件ほどのワーニングが発生しました。この結果の分析によりRuby 2.7移行について傾向と対策が見えてきたので、現時点 (2020/01/08) で分かったことを共有します。 結論 (Ruby2.7移行についての傾向と対策) 傾向として、多くのgemがRuby 2.7.0からワーニングとなる言語仕様変更の影響を受ける 具体的には、ブロック無しProc.new/proc/lambdaおよびキーワード引数 (k
open-uriってちゃんと実装しないとなにかと危険な香りがしますな、という話。 Ruby 2.4.0 リファレンスマニュアル module OpenURI 例えば外部のAPIを叩く必要があって として使っていたとする。 フォームから受け取ったパラメータを入れてopen(なんやら)とする場合、そのままなんでもopen()の中に入れるとかなり危険。 例えばこれはフォームに入れたURLにしたがって、そのウェブサイトに行ってなんか取ってくる例。 コードで言うとこんな感じ。 require "open-air" class PagesController < ApplicationController def search @page = open(search_params[:url]) end private def search_params params.permit(:url) end
Jika Anda bukan seorang penjudi dan Anda sama sekali tidak terbiasa dengan kasino perjudian tongkat dan batu bata yang Anda pikir ingin Anda coba beberapa perjudian kasino online maka Anda harus sedikit pekerjaan rumah sebelum memulai usaha Anda di dunia perjudian kasino online. Break da Bank Again: Mesin Slot lain yang direvisi dengan ide yang dirubah. Saatnya untuk benar-benar cocok dengan game
はじめに 前回、「AWS SDK for Ruby バージョン 2 を使用したS3バケットへのオブジェクトアップロード」でS3へオブジェクトのアップロードを行いました。 でも、このままではアップロードしただけで、誰もアップしたオブジェクトにアクセスができないですね。。。 ということで、今回はアップロードしたファイルをブラウザからアクセスできるように期限付きURLの発行をしてみたいと思います。 ちなみに期限付きURLとはその名の通り、URLを発行してから10分だったり3日だったり1週間だったりと、利用できる期限を持たせたURLです。 1. アクセス先の準備 前回、「AWS SDK for Ruby バージョン 2 を使用したS3バケットへのオブジェクトアップロード」で作成したバケットを利用するので今回は省略します。 2. アクセスユーザーの用意 まずは、バケットへアクセスできるユーザーを準備
自己紹介 高橋征義 一般社団法人日本Rubyの会代表理事 株式会社達人出版会 3FのUSPさんの隣のブース 13:50〜「Dynamic Typing再考」司会 Ruby最新情報 RubyKaigi 2016 現在のRuby Ruby 2.3.1 昨年紹介済み 現在開発中のRuby Ruby 2.4.0 2.4のステータス 2.4.0 preview 1がリリース (2016/06/20) Ruby 2.4.0 preview 1のインストール Ruby 2.4.0 preview 1のインストール ソースからインストールする rbenvのpreview用を使う brew reinstall ruby-build --HEAD rbenv install 2.4.0-preview1 rbenv local 2.4.0-preview1 Ruby 2.4の変更点 基本的に地味 派手な奴は3
Ruby で長い時間掛かるかも知れない処理のタイムアウトを行うにはこんな感じにします。 require 'timeout' begin Timeout.timeout(3) do # 3秒でタイムアウト hoge # 何かの処理 end rescue Timeout::Error puts 'なげーよ' # タイムアウト発生時の処理 end Timeout.timeout はブロック開始時にスレッドを作成し、そのスレッドで指定された秒数だけ sleep して、sleep から復帰してもまだブロックが終わってなければ作成元のスレッドに対して Timeout::Error 例外を発生させます。 指定時間以内に処理が終わる場合: timeout(X) │ スレッド作成 ─┐ │ │ ブロック実行 sleep X │ │ スレッドkill→ 🕱 │ timeout復帰 指定時間以内に処理が終わら
こんにちは。卜部です。 ruby-coreというRuby本体の開発の議論がされているメーリングリストがあります。 新機能やバグ報告などがだいたいここに集約されてくるので購読しておくとRubyの動きが分かります。 最近興味深かったトピックを紹介します。過去分はこちら 最近のruby-core (2016年6月) 最近のruby-core (2016年4月) 最近のruby-core (2016年3月) 最近のruby-core (2016年2月) [#12217] Introducing Enumerable#sum for precision compensated summation and revert r54237 たしか何回か前のこの連載でも紹介したこの機能は、2.4に入りました。Enumerable#sum というメソッドが追加されており、特定の場合(浮動小数点数の配列とか)には
Processing large files is a memory intensive operation and could cause servers to run out of RAM memory and swap to disk. Let’s look at few ways to process CSV files with Ruby and measure the memory consumption and speed performance. Prepare CSV data sample Before we start, let’s prepare a CSV file data.csv with 1 million rows (~ 75 MB) to use in tests. require 'csv' require_relative './helpers' h
もうぶっちゃけて言ってしまえば英語圏のITスタートアップで働く場合に日本人であることのメリットなんてほとんど無い。日々の業務で実感できることなんて皆無だ。ほとんどの情報は英語で発信されているし、会議もランチ中の会話も英語。ジリ貧状態の日本市場と同じように昔は存在したかもしれない日本語話者のメリットも低下しっぱなし。その代わりに英語の重要性だけが急上昇を続けている。 そんな中で本当に日本人であることのメリットだな、と実感できたことはこれ。 Rubyを作ったまつもとゆきひろ氏が日本人であること。 これは応募書類の技術欄に「Ruby」と書いた場合に限られるが、転職の面談時に意外にイケる。全ての日本のRubyに関わるエンジニアはまつもと氏に感謝しなければならない。 例えばリネオル・メッシという世界最高のサッカー選手がアルゼンチン出身というだけで「アルゼンチン人=サッカー上手い」の印象が人々に刷り込
こんにちは。卜部です。 ruby-coreというRuby本体の開発の議論がされているメーリングリストがあります。 新機能やバグ報告などがだいたいここに集約されてくるので購読しておくとRubyの動きが分かります。 先月忙しかったためすっぽかしたら逆に今回量が増えて大変です。小分けにしたほうがいいのかもです。 過去分はこちら ・最近のruby-core (2016年4月) ・最近のruby-core (2016年3月) ・最近のruby-core (2016年2月) [#12435] Using connect_nonblock to open TCP connections in Net::HTTP#connect Net::HTTP#connect というメソッドがあって、いまはブロッキングIOを使っているわけですが、それだと不都合がある(タイムアウトのためだけにスレッド立ち上げたりいろい
大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track
正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlやPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く