- 1. each_with_indexを使用したプログラムを作成する問題
- 2. YAML unsafe_load + freeze で FrozenError が出た
- 3. RailsアプリケーションをRuby3.0系にあげるために苦労したこと3選
- 4. IRBの補完にRBSを組み合わせてみる
- 5. ransack使用時の注意点
- 6. Ruby on RailsでCloud Spannerエミュレータを使ってみる
- 7. APIの負荷試験でNew RelicのAPMを活用する
- 8. App Store Connectの審査情報をキャッチして通知する仕組み
- 9. Stimulus リファレンス: アクション
- 10. Rubyだけで仮想DOMを実装してみる
- 11. ActiveRecordを継承しなくたって動的でネストしたフォームオブジェクトを使いたい!
- 12. RubyKaigi 2022 セッション紹介「Method-based JIT compilation by transpiling to Julia」
- 13. rubyの検索問題 バイナリーリサーチ
- 14. Ruby on Rails をcloud9上に環境構築してアプリケーションを立ち上げるまでの手引書
- 15. 【Rails6】formヘルパー内で、submitボタンにCSSをつけたい場合・button_tag要素を使ってtypeにsubmitを指定する場合
- 16. CSPをわかりやすく説明したい
- 17. RubyonRailsチュートリアル:実践メモ【第三章】
- 18. devise.rbで記述されている内容について
- 19. Web server one-liner by Ruby
- 20. rails_helper.rb に require ‘capybara/rails’ と require ‘capybara/rspec’ は書かなくていい
each_with_indexを使用したプログラムを作成する問題
## 問題
以下の配列から任意の数字を探して何番目に含まれているかという結果を返すsearchメソッドを、`each_with_index`
を用いて作成するという問題。“`
input = [3, 5, 9 ,12, 15, 21, 29, 35, 42, 51, 62, 78, 81, 87, 92, 93]
“`**出力例**
search(5, input) → 2番目にあります
search(12, input) → 4番目にあります
search(7, input) → その数は含まれていません
まず、`each_with_index`がわからないので理解します。
### each_with_indexメソッドとは
“`ruby
配列名.each_with_index do |item, i|end
“`例
“`ruby
fruits = [“メロン”, “バナナ”, “アップル”]fruits.each_with_index do |item, i|
puts “#{i}番目のフルーツは、#{item}です。”
end
YAML unsafe_load + freeze で FrozenError が出た
## おおむね……
https://secret-garden.hatenablog.com/entry/2021/05/23/200803
この記事の追試みたいなものです.
## Psych 3.x
再帰な定義をしてみた.
“`ruby
> require ‘yaml’
=> true” YAML.load(<<~EOL) " a: &a " b: " <<: *a > EOL
=> {“a”=>{“b”=>{}}}” YAML.load(<<~EOL, freeze: true) " a: &a " b: " <<: *a > EOL
FrozenError: can’t modify frozen Hash: {}
from psych-3.3.2/lib/psych/visitors/to_ruby.rb:375:in `block in revive_hash’
“`
RailsアプリケーションをRuby3.0系にあげるために苦労したこと3選
現在Qiitaでは [graphql-rubyアップデートで引っかかった点(1.8->1.12) – Qiita](https://qiita.com/WakameSun/items/eab39302b9580b51b7a2) でも触れた通り、Ruby3.0へのアップデートを進めています。
基本的に自分1人がエイヤエイヤと進めて、ほぼほぼ動く(Rspecは全部通ったが、まだ実際に動かす検証が足りない状態)のものが完成しておりどんなに遅くなっても1月末には出せるだろうという状態です。
そこで、早計ではありますがここに苦労したよという部分を何個か選んで書いてみることにしました。
もしかしたら、今後何かにはまって増えるかもしれません。## 1. 破壊的変更に付いていけず放置されたGem対応
若干主旨からは外れそうな気もしますが、一番苦労したのはこれです。
基本的にはDependabotなどにより可能な限り新しい状態を保とうとしていますが、 **破壊的変更多すぎ!今は余裕ないから後で!** 放置されてしまうGemや、そもそもDependabotが作るPR数を絞っているとなかなかPRが作られ
IRBの補完にRBSを組み合わせてみる
カタカタッ ターンッ! RubyのIRBめっちゃ便利ですよね。
IRBは補完機能もすごく便利なんですが、ちょっと気になるところもあります。
– メソッドチェーンすると正しく補完できずありとあらゆるメソッド名が候補に出てしまう
– 正規表現で実装されてるので時々誤作動を起こす
– `array[i].` `%s[symbol].` 配列のメソッドが候補に出る
– `array.map{}.` `%w{words}.` HashとProcのメソッドが候補に出るなので、型情報(RBS)とかも使ってもうちょっといい補完候補を出せないかなと 、gem `katakata_irb` を試しに作っています。
https://github.com/tompng/katakata_irb
gemをインストールすると`kirb`コマンドが使えるようになります。
メソッドチェーンしてても、ブロック引数・変数などを使ってても、ある程度正しく型を推測して補完候補を出せたり出せなかったりします。![katakata0.png](https://qiita-image-store.s3.ap-n
ransack使用時の注意点
# はじめに
ransackは検索機能を楽に実装することができるgemです。
https://github.com/activerecord-hackery/ransackスター数は執筆時現在5.3kで、今なお開発が続けられており、人気のgemと言って差し支えないでしょう。
しかし、そのセキュリティ上の問題点についてはあまり注目されていないように感じます。
実際、執筆時現在Googleで「ransack」と検索するとセキュリティについて触れられていない記事が散見されます。
この記事ではransackのセキュリティ上の問題点とその対策について紹介します。# セキュリティ上の問題点
**デフォルトで任意のカラムに対して検索ができてしまいます。**[^1]
後述の手順によってカラムの中身を特定可能です。## 具体例
usersテーブルにはカラムsecret_tokenが存在するとします。
以下のような実装で、後述する対策をしていない場合に情報漏洩が起きます。“`ruby
class UsersController
# GET /users
def index
Ruby on RailsでCloud Spannerエミュレータを使ってみる
[PONOS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ponos) の20日目の記事です。
昨日は@tequila0725さんの[BitbucketでPR作成時に表示されるコミットメッセージリストをPR説明テンプレート有りでも表示する](https://qiita.com/tequila0725/items/2074958ee693dc58bac6)でした。# はじめに
Cloud Spannerは計画的ダウンタイムがなく、無制限のスケーリングなど、他のデータベースにはない特徴を持ったデータベースです。
https://cloud.google.com/spanner?hl=ja
標準のActiveRecordはSpannerには対応していませんが、Googleからactiverecord-spanner-adapterが提供されていますので、そのGemを使って「Ruby on Rails」 + 「Cloud Spanner」の開発することできます。
この記事では、Cloud Spannerエミ
APIの負荷試験でNew RelicのAPMを活用する
## はじめに
この記事は[New Relic Advent Calendar 2022](https://qiita.com/advent-calendar/2022/newrelic)の20日目の記事となります。Rubyで構築されたAPIのパフォーマンスチューニングに挑んでいる者です。
先日負荷試験を実施し、試験結果の分析にNew RelicのAPMを活用するためにNew Relicさんと面会させていただきました。
そこで教えていただいたことや学んだことをこの記事にて共有します。### 対象者
– これからNew Relicを使い始めようと思っている人
– New Relicを使ってサーバーサイドの処理を見たい人
– サーバーサイドのパフォーマンスチューニングにNew Relicを活用したい人## Distributed Tracing
各項目を説明していきます。
### Trace groups
– trace_duration
– レスポンスタイム
– span
– DBへのクエリ実行・他サービスの呼び出し・関数の呼び出しをおこなった回数
– 多すぎる場
App Store Connectの審査情報をキャッチして通知する仕組み
こんにちは。[CYBIRD Advent Calendar 2022](https://qiita.com/advent-calendar/2022/cybird)、20日目担当の@yuki_utsumiです。
普段は品質管理部エンジニアとして業務の自動化などをしています。
アドベントカレンダー19日目の記事は@namikoroさんの[「現場エンジニアが担当するカジュアル面談のいろは」](https://qiita.com/namikoro/items/786bf0f65cf8494c81aa)でした。私もカジュアル面談の際はかな〜り参考にさせてもらいました。ぜひ読んでみてください。今回は、私が社内で運用しているApp Store Connectの情報を取得してくる仕組みについて紹介します。
# どんな仕組み?
現在、社内ではAppleアプリの審査内容に変更があると、その内容がslackに通知されるbotを運用しています。
![スクリーンショット 2022-12-12 2.34.22.png](https://qiita-image-store.s3.ap-northeast-
Stimulus リファレンス: アクション
:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::https://stimulus.hotwired.dev/reference/actions
アクションはコントローラーでDOMイベントを処理する方法です。
“`html
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた