- 1. グループごとに投稿できる機能
- 2. 脆弱性から学ぶRailsの仕組み(CVE-2022-23633編)
- 3. 「たのしいRuby」の著作権
- 4. Hotwireを理解するために選曲アプリを作ってみた
- 5. Kinx から Kilite へ
- 6. Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.1 ~無限 ガチローカル編~
- 7. Stimulus リファレンス: ターゲット
- 8. 【Rails】インスタンス一覧と新規インスタンスを同時に取得するときの挙動が少し意外だった
- 9. RubyonRailsチュートリアル:実践メモ【第三章】
- 10. setup & sample run android app with appium + ruby in Mac
- 11. RuboCop Metrics/CyclomaticComplexityをMax: 30で開始した話
- 12. 【Rails】Mechanizeを利用して、サイトの情報を取得して表示する方法【スクレイピング】
- 13. RubyでS3のファイルを別名でダウンロードするためのPresigned URLを取得する
- 14. each_with_indexを使用したプログラムを作成する問題
- 15. YAML unsafe_load + freeze で FrozenError が出た
- 16. RailsアプリケーションをRuby3.0系にあげるために苦労したこと3選
- 17. IRBの補完にRBSを組み合わせてみる
- 18. ransack使用時の注意点
- 19. Ruby on RailsでCloud Spannerエミュレータを使ってみる
- 20. APIの負荷試験でNew RelicのAPMを活用する
グループごとに投稿できる機能
こんにちは。寒すぎて凍えているGeeksalonの限界メンターです。
「アーティストごとにアルバムを投稿したい」、「飲み会ごとに飲んだ量でランキングを実装したい」、「旅行プランごとに行き先を登録したい」etc…
そんな声に応えた機能を実装してみました。ユーザーのグループ機能はあったんですが、投稿をグループ化するのはぱっと見つからなかったので、初めてですが記事を書いてみました。未熟者ではありますが、温かい目で読んでみてください♪
—
## 【目次】
1. 開発環境
2. 概要
3. アソシエーション
4. 機能実装
➢ モデルの作成
➢ コントローラーの作成
➢ アソシエーション
➢ HTMLの実装
・ おまけ:ランキング—
## 【 1. 開発環境 】
・ruby 3.0.4
・rails 6.1.6**- 前提 -**
・Userの機能は実装済み
・TweetのCRUD機能は実装済み—
## 【 2. 概要 】
– コントローラー・モデルは以下3つ
– User:ユーザー
– Tweet:投稿(好きなものに置き
脆弱性から学ぶRailsの仕組み(CVE-2022-23633編)
# 脆弱性から学ぶRailsの仕組み(CVE-2022-23633編)
少し前にやった[脆弱性からRubyの仕組みを学ぶやつ](https://qiita.com/0kate/items/e0209cd83b4992d75b19)を`Rails`でもやってみる記事。
前回同様「脆弱性の原理を把握する」という側面から、実際に脆弱性を試しつつ「その本体の仕組み」も学んでしまおうという趣旨。
`Rails`も業務で使うようになったので、これもちゃんと学んでみようと思う。# 対象の読者
この記事の対象となる人はこんな感じで想定。
– `Rails`を使い始めたばかりで仕組みから学びたい人
– `Rails`はよく使ってるけど仕組みはよくわからないから知りたいという人自分のような`Rails`入門したてホヤホヤの方にも勉強になれば嬉しいので、自分の理解度整理も含めて「`Action Pack`って何?」みたいな説明を軽くする箇所もあるためその辺はご了承ください。
# Ruby on Rails
さっきから「Rails、れいるず」と言っているもの。
言わずとしれたRubyのWebアプリケ
「たのしいRuby」の著作権
# 「たのしいRuby」の著作権
快調に投稿してきましたが、ふと著作権が気になりました。
## 参考文献
この記事は以下の情報を参考にして執筆しました。
-[たのしいRuby、高橋征義、後藤裕蔵著、 まつもとゆきひろ監修、SBクリエイティブ株式会社、第6版2019年](https://www.amazon.co.jp/%E3%81%9F%E3%81%AE%E3%81%97%E3%81%84Ruby-%E7%AC%AC6%E7%89%88-%E9%AB%98%E6%A9%8B-%E5%BE%81%E7%BE%A9-ebook/dp/B07PNN3TYF/ref=tmm_kin_swatch_0?_encoding=UTF8&qid=1671278506&sr=8-1)
-[『たのしいRuby 第6版』サポートページ、ソースコード](https://tanoshiiruby.github.io/6/index.html)## 著作権(第5版)
著作権について軽くネットで調べたら、
✅文章は丸写しすることはできない
✅プログラムも丸写しすることはできない
✅引用はできるが改変は一切でき
Hotwireを理解するために選曲アプリを作ってみた
# はじめに
[Ateam Finergy Inc.× Ateam CommerceTech Inc.× Ateam Wellness Inc. Advent Calendar 2022](https://qiita.com/advent-calendar/2022/finergy-commerce-tech-wellness)の21日目の記事です。
本日はエイチームコマーステックの@hibiheionが担当します。**Hotwire**はJavaScriptを使わずにSPA(Single Page Application)を作成することができる仕組みです。Rails 7では標準機能になっています。業務でRailsを使っている身としては無視できない技術だったので作ろうと考えていた個人開発のWebアプリに導入してみました。
# 選曲アプリの概要
カタログ情報を見ながら選曲するためのWebアプリです。ジャズをよく聴くのですが、その目線で見るとSpotify(に限らず私が知っている音楽ストリーミングサービス)が持っている情報が物足りないと感じていたことが作成理由です。本題から逸れるので
Kinx から Kilite へ
# おひさしぶりでございます
お気づきのように、毎年12月21日を狙って投稿してます。
* 本稿は言語実装アドベントカレンダー 2022 の 21 日目の記事です。
* https://qiita.com/advent-calendar/2022/lang_dev## おさらい
さて、ずっと [Kinx](https://github.com/Kray-G/kinx) という自作言語について記事を書いてきていたわけですが、ここ 1 年ほどほとんど活動しておりませんでした。理由は本業が忙しかったからなのですが、なんといっても、2 回くらい仕事が変わりました。今はコーディングとは全く縁もゆかりもない、なんだったら **ビジネスを企画する**、といった企画系のお仕事をしております。ほとんどプログラムを書くことがないですな。
本題に入る前に、[Kinx](https://github.com/Kray-G/kinx) についておさらいしておきましょう。また、今回のネタにつながる記事もあります。
* [手に馴染む道具(プログラミング言語)](https://qiita.com/
Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.1 ~無限 ガチローカル編~
「[Life is Tech ! Kanto Advent Calendar 2022](https://qiita.com/advent-calendar/2022/life-is-tech-kanto)」21 日目の記事になります。
# はじめに
こんにちは、Life is Tech! で関東 Web サービスコースメンターをやっているいっそです!
今回は、「Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.1 ~無限 ガチローカル編~」ということで、いつもは Cloud9 で運用されている Web サービスコースの開発環境をローカルで建ててみたいと思います!
この記事は 2 日間に分けて投稿されていますが、1 日目は macOS にソフトウェアを全てインストールしてローカル環境を構築する方法、2 日目は Docker Compose を使用する方法と別々のことを紹介しています。
気になったら別日の記事も読んでみてくださいね!# 本記事で検証されている環境
本記事は以下の構成の PC にて検証されています。(特に Windows は対応
Stimulus リファレンス: ターゲット
:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::https://stimulus.hotwired.dev/reference/targets
ターゲットを使用すると重要な要素を名前で参照できます。
“`html
“`
# 属性と名前
`data-search-target`属性はターゲット属性と呼ばれ、その値は`search`コントローラーで要素を参照するために使用できるターゲット名のスペース区切りのリストです。
“`html
【Rails】インスタンス一覧と新規インスタンスを同時に取得するときの挙動が少し意外だった
# はじめに
先日、一覧を取得するページで新規レコードも登録できるフォームを設置する必要に迫られましたのですが、その時Railsが自分としては意外な動きをする部分があったので紹介します。
# 完成形イメージ– `User`と`Task`モデルは1対多の関係
– `Task`の一覧を表示しつつ、同じページに新規タスクの入力フォームを設置![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1051539/c58768c4-a081-21fb-4dfd-8cba4e7530c4.png)
# エラーが発生するコード
“`ruby:tasks_controller.rb
def index
current_user = User.find(params[:user_id])
@tasks = current_user.tasks
@task = @tasks.new
end
“`
`@tasks`の書き方を変えた下記でも同じです。“`ruby:tasks_contro
RubyonRailsチュートリアル:実践メモ【第三章】
Ruby on Rails チュートリアル(Webサービス開発が学べる学習サービス)に従って、MVCフレームワークアプリケーションを作成していく。
**使用ツール** :
AWS Cloud9
## ローカルサーバーの使用方法
ローカルサーバーについてのまとめ。※サーバーウィンドウの出し方
1. 一番上のメニューバーから、**preview**を選択する
1. **Preview Running Application**を選択する#### **サーバーを立ち上げる**
“`
$ rails server
“`
※サーバーを立ち上げる際は、サーバー用とコマンド用のターミナルを分けると良い。
[新しくターミナルを開く方法](https://qiita.com/suzuki_q/items/59fea2e882197f562ead)
#### **サーバーをシャットダウンする**
`ctrl + C`#### **ローカルサーバーが立ち上がらない時の対処法**
ポートが使用中というメッセージが出た場合、コマンドで実行中のファイルを確setup & sample run android app with appium + ruby in Mac
# Outline
先日、java , python によるtest自動化するための構築,sample codeを記載した
Selenium WebDriver Java Simple Program – Login
setup & sample run android app with appium + python in Mac今回は、NativeAPPをRubyでテストするための第一歩までを記述する。
# install ruby 3.x
Mac はDefaultでrubyがinstallされている。ただ、2.6と古いversionであり、3.x系を手動でインストールする
いまのrubyのversionを確認“`
ruby -v
“`
ruby 2.6.8p205 (2021-07-07 revisiRuboCop Metrics/CyclomaticComplexityをMax: 30で開始した話
**\\\ みんせつ Advent Calendar 2022の第20日目の記事です ///**
[みんせつ Advent Calendar 2022](https://qiita.com/advent-calendar/2022/msetsu)
前回の記事はみんせつに入社して7ヶ月目のIさんの「[Hello, Zenn!](https://zenn.dev/msetsu/articles/a9e0618a8adefa)」でした。
—
Rubyも書きます、T郎です。
みんせつでは[創業当初](https://qiita.com/msetsu/items/cdab9c841d96cd4aa4c1)よりRuby on RailsでWebサービスを開発してきました。当初よりRuboCopを導入していました。
## RuboCopを導入していました
はい、開発当初よりRuboCopを導入していました。ええ、実装開始してから、555営業日後に。
ということで、555営業日の間はRuboCopを一切使わない形でRubyコードの実装が推進されていました。
## RuboCo
【Rails】Mechanizeを利用して、サイトの情報を取得して表示する方法【スクレイピング】
# 1:概要
**railsでスクレイピングでhtml情報を取得し、欲しい要素を抽出して自サイトに表示させる方法**を紹介していきたいと思います。
スクレイピングとはWebやデータベースを広く探って「データを抽出する手法」のことです。
Mechanizeというgemを使った方法を紹介していきたいと思います。今回は2種類ご紹介したいと思います
①Qiitaのトレンド記事の見出しを取得し、リンク付きで表示する方法
②[https://craftgawker.com/](https://craftgawker.com/)(手作り作品投稿サイト)から写真を取得し表示させる方法### 完成図イメージ
①
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1373315/177e8a5c-85b2-f15e-3fb7-d349c37123d7.png)②
![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazoRubyでS3のファイルを別名でダウンロードするためのPresigned URLを取得する
## 背景
同一名のファイルをアップロードしたときにS3上でファイル名が衝突しないようにS3にはアップロード時のファイル名とは別名でアップロードしており、
S3のkeyとアップロード時のファイル名をテーブルで保持している。Presigned URLを発行してそのままダウンロードするとS3にアップロードしたファイル名でダウンロードされる。
S3アップロード時のファイル名は衝突回避のため複雑なランダム文字列にしているためファイル名が分かりづらく、ファイルアップロード時の名前でダウンロードしたいモチベーションがあった。## 対応内容
“`rb
region = “{{your region}}”
bucket = “{{your bucket}}”
file_key = “{{your s3 file key}}”
file_name = “{{ダウンロード時に指定したいファイル名}}”
encoded_file_name = ERB::Util.url_encode(file_name) # 日本語のファイル名対応aws_s3_client = Aws::S3::Client
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}です。”
endYAML 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使用時の注意点
この記事は[Ruby on Rails Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ruby-on-rails)の20日目の記事です。
# はじめに
ransackは検索機能を楽に実装することができるgemです。
https://github.com/activerecord-hackery/ransackスター数は執筆時現在5.3kで、今なお開発が続けられており、人気のgemと言って差し支えないでしょう。
しかし、そのセキュリティ上の問題点についてはあまり注目されていないように感じます。
実際、執筆時現在Googleで「ransack」と検索するとセキュリティについて触れられていない記事が散見されます。
この記事ではransackのセキュリティ上の問題点とその対策について紹介します。# セキュリティ上の問題点
**デフォルトで任意のカラムに対して検索ができてしまいます。**[^1]
後述の手順によってカラムの中身を特定可能です。## 具体例
usersテーブルにはカラムsecret_t
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へのクエリ実行・他サービスの呼び出し・関数の呼び出しをおこなった回数
– 多すぎる場関連する記事
OTHERカテゴリの最新記事
- 2024.09.22
JAVA関連のことを調べてみた
- 2024.09.22
JavaScript関連のことを調べてみた
- 2024.09.22
iOS関連のことを調べてみた
- 2024.09.22
Rails関連のことを調べてみた
- 2024.09.22
Python関連のことを調べてみた
- 2024.09.22
Lambda関連のことを調べてみた