IT分からんわ~_~;

IT色々お勉強中のブログ

Ruby

changed?メソッドsaved_change_to_へ

rails5.1から title_changed? ↓ saved_change_to_title? title_was ↓ title_before_last_save に変わった Deprecate the behavior of AR::Dirty inside of after_(create|update|save) callbacks by sgrif · Pull Request #25337 · rails/rails · GitHub 変…

ruby find_each each map違い

eachはSQL的にLIMITをつけずに全件メモリに確保。 find_eachはSQL的にLIMITをつけてデフォルトでは1000件ずつメモリに確保。 mapメソッドはブロックの返り値を集めた新しい配列を作成 ※ちなみにattributes、assign_attributesは多分一緒?

コードの可視性をよくするには

books.google.co.jp medium.com gihyo.jp

rspec高速化parallel_testsを試す

先ずはローカルで実行 dockerのコア数確認 cat /proc/cpuinfo | grep processor processor : 0 processor : 1 processor : 2 processor : 3 コア数分database準備 bundle exec rake parallel:create[4] table準備 bundle exec rake parallel:prepare seedが…

同じテーブルを親子関係にしちゃダメな理由

http://shirusu-ni-tarazu.hatenablog.jp/entry/2012/11/04/173742 不要なカラムが増えすぎちゃうから そもそもrailsで扱いづらい、nested使いづらくなる パフォーマンスがどうなのかは分からない 一応無理やりできるっぽい、おすすめしない 【Rails】has_ma…

rails dm 覚書

service mesh 組織が大きくなっても速いサイクルで開発できる kurbanetesと関係あり サービス同士を繋げる 型と実践 観察できるのは結果だけ こうゆう型をやって結果が出たと説明すると良い 具体的題材があると良い 定量評価大事 fintech 少人数、リモートワ…

マジックコメントでRubyの最適化をする Ruby Optimization with One Magic Comment

Ruby Optimization with One Magic Comment ソフトウェアのパフォーマンスの最適化は簡単です:少ないことをする方法を見つける。 Rubyは遅いという評判があります。その印象は10年前からですが、主要な犯罪者の1人はガベージコレクタです。 これは、gabage…

RubyGemsの複数の脆弱性 Multiple vulnerabilities in RubyGems

Multiple vulnerabilities in RubyGems Rubyに入っているRubyGemsには、複数の脆弱性が存在します。それはRubyGemsの公式ブログで報告されています。 詳細 次の脆弱性が報告されています。 ルート以外のシンボリックリンクされたベースディレクトリに書き込…

How Fast is Ruby 2.5.0?

engineering.appfolio.com 11月には、Ruby 2.5.0プレビュー1の速度結果を掲載しました。 Ruby 2.4よりはるかに高速でしたが、これは少し失望しました。 しかし、1つの非常に重要なパフォーマンスパッチが終了する前にリリースしたため、最終的な速度に大きな…

rubocopとの奮闘記録 途中

Use a guard clause instead of wrapping the code inside a conditional expression. 条件分岐のネストが深くなるのはダメ bad def hoge if boge? || kuzu? 'sine' end end good def hoge 'sine' if boge? || kuzu? end Don't use parentheses around the c…

Ruby on RailsによるJSON APIのシリアライズの高速化

英訳 Ruby on Railsアプリケーション向けの高速 JSON API gemのオープンソース・リリースを発表します。 Introduction 高速JSONAPIは、Active Model Serializer(AMS)が提供する主要な機能をすべて提供するとともに、 AMSよりも25倍高速というベンチマーク…

本当にインスタンス変数ダメなの?

ameblo.jp Ruby on Railsでcontrollerがインスタンス変数を持つ理由 - Qiita techracho.bpsinc.jp qiita.com

rails4からrails5にあげる

qiita.com こいつを参照してアップグレード、書いてなくてハマった部分 rubyのバージョンアップ、rbenv使ってたので最新にしてから2.4系取得 4.2.6飛ばして直接5にあげたので rails app:update を実行コマンド4と変わってるので注意 rails sをすると以下の…

Rails 5.2.0 beta: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials

英訳しただけ weblog.rubyonrails.org Railsのアップデートを扱うのが難かしいです。 利用できる良いプラグインがたくさんありましたが、フレームワーク自体に組み込むのが遅くなりました。 だから今できました! Rails 5.2の新しいActive Storageフレームワ…

rails 呼び出し先を確認

呼び出し先を確認 params[:controller] params[:action] caller_locations(1).first.label pry lsはオブジェクトのメソッドや、変数の表示 find-methodはメソッドを検索してくれます。 github.com

ActiveRecord忘れるので覚書

saveメソッドは、保存できない場合falseを返します。 save!メソッドは、保存できない場合例外ActiveRecord::RecordInvalidが発生します。 カラム名_changed?でそのカラムが変更されたか分かります。 model.changes {“report”=>[“こんばんわ報告”, “こんばん…

よくあるgem libv8とtherubyracerのインストールでエラーになるやつ

An error occurred while installing libv8 (3.16.14.7), and Bundler cannot continue. libv8はjavascript v8の何からしい bundle config build.libv8 --with-system-v8 こうするとlibv8はインストールできるがtherubyracerでエラー An error occurred whil…

rails db index名長すぎて怒られる

index名長すぎて怒れれたので以下のようにnameを指定してみる def change create_table :pogehoge_members_permissions do |t| t.references :pogehoge_member, index: true, foreign_key: true t.references :pogehoge_member_permission, index: true, nam…

rake taskの作り方

rake taskの作り方、何度やってもアホなので忘れてしまうのでメモ rails g task hogehoges taskできるので処理を追加 desc は説明 PogeNewsのpoge_idを一括更新 namespace :hogehoges do desc "hogehoges migration" task migrate_all: :environment do doma…

メソッドの定義場所を調べる方法

methodで#Methodを取り出す (byebug) m=co.method(:is_entry?) #<Method: Hoge#is_entry?> (byebug) m.source_location ["(eval)", 1] (byebug) m.owner hoge.methods.grep /target/i hoge.methods - Object.methods</method:>

rails n+1解決のincludesの使い方すぐ忘れるのでまとめ

hoge has_many pogeの場合 Hoge.includes(:poges) 複数の場合 Hoge.includes(:poges,:ages) ネストされたリレーションの場合 Hoge.includes(:poges,ages:[:doge,boge]) //またはcomの下にtranslationsがある場合 includes(colb: [com: :translations]) inclu…

ruby例外処理捕捉について(slack)

railsで捉えたいexceptionの種類 library _builtin (Ruby 2.1.0) raiseの仕方 https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html#raise エラーのgem GitHub - smartinez87/exception_notification: Exception Notifier Plugin for Rails rescue…

bundle install で gem install nokogiriで失敗する

久しぶりにrailsアプリを作ろうとしたらnokogiriエラー いつも直し方を忘れるのでメモ エラー↓ -[2197]% bundle install Fetching gem metadata from https://rubygems.org/.......... Fetching version metadata from https://rubygems.org/.. Fetching dep…

cocoonを使ってみた

github.com cocoon使ってみた readmeに書いてある通り以下を実行 Gemfileに追加 gem "cocoon" application.js に追加 //= require cocoon strong_parameterに :id :_destroy を入れるとからの場合に消してくれるらしい インデントに注意して追加してね = sem…

新規railsアプリ作成 postgres編

hogehogeアプリを作成 mkdir hogehoge cd hogehoge echo 2.2.4 > .ruby-version ruby -v rbenv local 2.2.4 ll -a rbenv versions gem install bundler rbenv gemset list rbenv gemset create 2.2.4 hoge echo >.rbenv-gemsets hoge ll -a bundle init vim …

Rails脆弱性情報

脆弱性情報 CVE-2015-7581 Object leak vulnerability for wildcard controller routes in Action Pack //routeに":controller"を含んでいると脆弱性に引っかかる? Not affected: CVE-2015-7578 Possible XSS vulnerability in rails-html-sanitizer Versio…

Rubyの良いところ、悪いところ

良いところ 「書いていて楽しい」「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (enjoy programming)」 直感的でわかりやすい メソッド名とか 100.next # => 101 'Ruby'.include?('P') # => false ライブ…