kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Ruby

今更CentOS6でRubyを検証するDocker環境がほしい時みる記事

どうしても古いままの環境をいじらざるを得ない時ありますよね... Dockerfile FROM centos:6 RUN \ sed -i -e "s/^mirrorlist=http:\/\/mirrorlist.centos.org/#mirrorlist=http:\/\/mirrorlist.centos.org/g" /etc/yum.repos.d/CentOS-Base.repo &&\ sed -i…

複数バージョンのbundlerがインストールされている時の挙動おぼえがき

概要 複数バージョンのbundlerがインストールされているとき、どれが選択されるのか曖昧だったので実験 注意 公式ドキュメントの記述がみあたらなかったので、バージョンが変わると挙動が変わるかもしれないです 環境 ruby:3.0.1-alpine を使用。defaultで入…

elasticbeanstalkのプラットフォーム(ruby puma)のバージョンを上げると、nio4r の依存関係でエラーが発生する件

elasticbeanstalkのプラットフォーム(ruby puma)のバージョンを上げると、こんなエラーが出るようになる /opt/rubies/ruby-2.7.3/lib/ruby/site_ruby/2.7.0/bundler/runtime.rb:302:in `check_for_activated_spec!': You have already activated nio4r 2.5.7…

PumaとUnicornの違い

前提 どちらもアプリケーションサーバ(アプリケーションを動作させるためのサーバ) アプリケーションサーバーは送られてきたリクエストに対して、rubyやphpなどを実行して、動的な処理をした結果を静的な要素に変換してwebサーバーに返すためのもの。つまり…

serverless のバージョンが古いまま、lambda ruby 2.7 を使うと The security token included in the request is invalid エラーが出てハマるので最新版にしよう

というお話です 出てくるエラー ruby 2.7 で serverless invoke を実行すると --aws-profile を設定していても The security token included in the request is invalid が出ます Error raised from handler method { "errorMessage": "The security token i…

ruby3.0で「hashをキーワード引数に自動変換する機能」の削除がリスケされた流れを自分なりに理解する記事

なにこれ ruby3.0で「hashをキーワード引数に自動変換する機能」を削除する予定だったけど、延期もしくは中止する と、Matzがrailsのフォーラムでコメントしていたので、その経緯とかを把握するために記事にしました discuss.rubyonrails.org そもそも、hash…

AWS WAF Regionalの情報を取りたい場合、使うのは Aws::WAFRegional::Client だよ! というお話

これで2H程度ハマってしまった... 言いたいこと AWS WAFには、グローバル(CDN用)と、Region単位の Regional がある ruby SDKでWAFの情報を取りたい場合、グローバルとRegionalでは使用するclientが異なる グローバルならば、 Aws::WAF::Client Regional なら…

AWS SDK for Ruby で Application Load Balancer にいろいろな Listener を追加する方法おぼえがき

Listenerとは リスナーとは、設定したプロトコルとポートを使用して接続リクエストをチェックするプロセスです。リスナーに対して定義したルールにより、ロードバランサーが登録済みターゲットにリクエストをルーティングする方法が決まります。 Application…

Rubyでインクリメンタルする Quine AA を書いた

デモ 実行するごとにAAの白抜きの数字が増えていきます コード http://github.com/kasei-san/quine/blob/master/incremental/main.rb コードジェネレータ 前回解説したように、Quine AA は、AAを作るコード自身をAAに変換するジェネレータを作って作成します…

Rubyで書く! Quine AA!

こちらの記事を元に自分で作ってみた時の記録です mickey24.hatenablog.com ソースコード eval$s=%w' b="BAhsK2Lgf4 D/D/7/8/9///j/B/9 /8P8H/3/w/wf/f/7/7/ ///+//P/ j/Af5/AOA PAPwAAM CHH3z4wY cffPjBh x98+MGHH /z/wf8/ /P+D/z/g nwMAAAA PAPgBAA8 AAADA…

Rubyで書く! Quineのサンプルと解説

Quine ってなに? クワイン(英: Quine)は、コンピュータプログラムの一種で、自身のソースコードと完全に同じ文字列を出力するプログラムである。 クワイン (プログラミング) - Wikipedia 基本の Ruby Quine eval s="puts'eval s='+s.inspect" 解説 eval s=…

Rubyでは真偽とtrue/falseは別物だよ! というお話

今日は、Rubyの true, false と、真偽は別物だよというお話をします これは何? 会社blogで公開しようとした直前に、上位互換の記事が出てお蔵入りしてしまった可愛そうなblog記事です techracho.bpsinc.jp 供養と自分の学習記録も兼ねて、個人ブログにupいた…

Dependency Injection 依存オブジェクトの注入 についてのおぼえがき

Dependency Injectionって「依存性の注入」じゃないの? やっていることは、 依存しているオブジェクトを注入するようにする なので、「依存オブジェクトの注入」の方が訳としてただしいのでは? という議論がある little-hands.hatenablog.com あと、自分が読…

RubyでGCしても直ちにRSSが減るわけではないというお話

先に結論 GCをしても、RSSが直ちに減るわけではない C言語のレイヤーで、free しても次の malloc に割り当てるためにメモリを手放さない実装があるのが原因らしい 計測してみた 適当な長さのStringを10000回作って、RSSと、ObjectSpace.memsize_of_all を計…

クイズ形式で rubyのジャンプ構文の挙動をおさらいしてみましょう

全問正解した人は自慢して良いと思います。全5問です。 なお、動作環境は ruby 2.5.0 です 問1 Procの中でbreak 実行結果はどうなるでしょう? def main p = Proc.new{|v| p v break if v >= 5 } 1.upto(10, &p) # & は、ブロックの代わりにProcを渡す命令 p …

ruby:2.3.6-alpine3.4 に、postgresql-dev 9.6系をインストールしようとしたら conflict が発生した話

現象 alpine3.4 だと、postgresql-dev や client が 9.5 系 9.6 系を入れたくて、Dockerfileで /etc/apk/repositories を加工して、alpine3.5系のパッケージを入れるように変更した /etc/apk/repositories http://dl-cdn.alpinelinux.org/alpine/v3.5/main h…

クイズで学ぶ初心者がハマりがちなRubyの代入いろいろ

クイズ1 以下のコードを実行した場合、変数 a の値はどうなるでしょう? a=100 b=a b=200 答え 100 解説 a=100では、変数aに数値オブジェクト100を参照させている b=aでは、変数bに変数aと同じオブジェクトを参照させている そして、b=200では、変数bに数値オ…

Rubyの代入では参照値が代入先に格納される

先に結論 rubyの代入はオブジェクトの参照値(ポインタのようなもの)が代入先に格納される もし、格納元が参照値の場合、同一の参照値が代入先に格納される(参照の参照にはならない) イメージとしては、C++のポインタの値の代入に近い 文字列"aaa"を変数aに代…

slack に書かれた内容を Amazon Polly で読み上げてみた

この記事は feedforce Advent Calendar 2016の6日目です!! www.adventar.org 昨日は、tjinjin の ドラッカー風エクササイズをチームで試してみました でした cross-black777.hatenablog.com 期待マネジメント大事ですね。 ウチのチームも一度やってみたら面…

【1日1gem】 rspec3 でも its が使いたい! rspec/rspec-its

1日1gemとは 最近好きなgemってありますか? という質問に自分が答えられるように始めたgemを紹介する記事 rspec/rspec-its https://github.com/rspec/rspec-its 何をするの? rspec3 で core から無くなった、 its を復活させる gem 正確には、 its が別gemに…

rubyスタイルガイドななめ読み

rubocopを使うに当たって把握しておく 知らなかったこと/よさ気なところをメモ ソース 原文: bbatsov/ruby-style-guide 日本語訳: ruby-style-guide/README.ja.md at japanese レイアウト {の前後、}の前にはスペース [1, 2, 3].each { |e| puts e } メソッ…

bundler を使っているプロジェクトに自分だけが使いたいgemを入れる方法

自分は便利だから使いたいけど、他の人にまで強制するのはなんだなーって思うgemを開発時に使いたい時どうするかメモ 概要 環境変数BUNDLE_GEMFILEで使用するGemfileを設定できるので、個人用のGemfileを用意する 前提 direnv/direnvを使ってること やりかた…

Railsの各コンポーネントについてざっくり理解する

はじめに Rails4.2系の話です いろいろある Railtie ActionMailer ActionPack ActionView ActiveJob ActiveModel ActiveRecord ActiveSupport Railtie Railsの中核部分 Railtieに基づいたプラグインの組み合わせで、Rails機能を拡張できる ActionController…

Rubyのライフサイクルがよくわかってなかったので調べた

各バージョンの寿命ってどんなもんなの? 先に結論 現在更新されているのは、2.1 と 2.2 2.0はセキュリティFixのみ(メンテナンスモード) メンテナンスモードは1年間(2.0 は 2016/02/24 に終了予定) 1年に1回、クリスマスにマイナーバージョンが上がる 2015/12…

validates acceptance を設定した属性は、テーブルにない場合は自動的にVirtual Attributesになる

Virtual Attributes ActiveRecordの機能 文字通り仮想的な属性 テーブルの実カラムには無いけど、エントリフォーム等に入れたい値を格納する場所 Virtual Attributes の作り方 モデルに属性をattr_accessorで追加する 簡単。 Virtual Attributes の使い方 DB…

rubyで、Amazon Product Advertising APIを使ってAmazon商品検索をしてみる

それ用のgemがある jugend/amazon-ecs Amazon ECS is a generic Ruby wrapper to access Amazon Product Advertising API. APIキーを用意 本当はIAMを使ってProduct Advertising APIだけ使えるキーを作るべき ただし現在、IAMの中にProduct Advertising API…

Railsガイド Rails のコマンドラインツール 2.10 カスタムRakeタスク

Rails のコマンドラインツール | Rails ガイド ジェネレータ rails generate task で生成 $ rails generate task sample_task create lib/tasks/sample_task.rake namespace :sample_task do end Rakeタスクの基本形 namespace :sample_task do desc 'あいさ…

pryとそのプラグイン色々メモ

pry-rails pryをrailsで使うためのgem pryと、pry-railsの使いそうなコマンド help : 使い方が出てくるから読め cd 、ls : オブジェクトを行き来できる tab補完してくれるよ! ls -m : メソッドだけ表示 ls --grep : 絞りこみ #{command}; : 戻り値をechoしな…

Rails ガイド Active Record バリデーション

Active Record バリデーション | Rails ガイド クライアント側でのバリデーションは扱いやすく便利ですが、一般に単独では信頼性が不足します。JavaScriptを使用してバリデーションを実装する場合、ユーザーがJavaScriptをオフにしてしまえばバイパスされて…

Railsガイド Active Record の関連付け(1.関連付けを使用する理由〜2.関連付けの種類)

Active Record の関連付け (アソシエーション) | Rails ガイド 関連付けのメリット Railsがテーブル間の関連を知ることで、必要な作業を勝手にやってくれる 例えば、顧客と注文が関連していたら、顧客の情報を消した時に、顧客に紐付いた注文を全部消してく…