Ruby関連のことを調べてみた2022年12月22日

Ruby関連のことを調べてみた2022年12月22日

ruby 練習問題40 (アウトプット用)

以下の要件を満たすxyz_thereメソッドを実装する問題。
・任意の文字列から連続する文字列”xyz”を探し、その直前にピリオド(.)がない場合はTrueを出力する
・任意の文字列から連続する文字列”xyz”を探し、その直前にピリオド(.)がある場合はFalseを出力する
・上記2つの条件に当てはまらない場合はFalseを出力する
“`
def xyz_there(str)
#処理を記述
end
“`
出力例
xyz_there(‘abcxyz’) → True
xyz_there(‘abc.xyz’) → False
xyz_there(‘xyz.abc’) → True
xyz_there(‘azbycx’) → False
xyz_there(‘a.zbycx’) → False

以下、模範解答
“`
def xyz_there(str)
if str.include?(“.xyz”)
puts “False”
elsif str.include?(“xyz”)
puts “True”
else
puts “False”
en

元記事を表示

【Laravel9】入力したカラムを使って別カラムに値を入れる

## ユーザーが入力したカラムを使って、同テーブルの別カラムに値を入れたい
Railsを書いていた頃は、モデルに`before_save`メソッドを書いて
そこに計算式などを書いていたのだが、Laravelの場合どのように書くとやりたいことができるのか??

例えば、ユーザーが`height`と`weight`を入力したとして、
その値をシステムが計算し、`basemetabolism`というカラムに値を自動で入れてくれる場合、
Railsだと下記のようにモデルに記載することで実装できる。
(そもそもこれがベストプラクティスかはわからない)
“`ruby
before_save do
self.basemetabolism = 13.397*(weight)+4.799*(height)-5.677*(user.age)+88.362
end
“`

同様のやり方でLaravelでもできないかなと思ったのですが、
いまいちしっくりこなかったので、一次避難としてコントローラに直接計算式を書いてしまうことにしました。

### 実際のコード(Laravel)
“`php
pu

元記事を表示

railsチュートリアルの復習について

こんにちは。
今日はrailsチュートリアルの効率的な復習方法でいいアイデアを思いついたので
メモとして残そうと思います。
二つあります。

1.各章のファイルをgithubからダウンロードしておく
 cloud9を使っている初学者は各章のファイルをダウンロードしておくと解説している部分のコードを簡単に調べられて便利です。

2.常に手を動かす
 ノートに鉛筆で書いたり、分からなくてもコードを打ってたりすると、無理やり頭を動かせて極小でもインプットされるので大事かなと。

progateを初めて3週間少し経ちました。
まだまだ分からないことだらけですが初学者を卒業できるように頑張ります。ポートフォリオを来年の2月までには完成させたい!

元記事を表示

Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.2 ~無限 Docker Compose 編~

「[Life is Tech ! Kanto Advent Calendar 2022](https://qiita.com/advent-calendar/2022/life-is-tech-kanto)」22 日目の記事になります。

# はじめに

こんにちは、Life is Tech! で関東 Web サービスコースメンターをやっているいっそです!

今回は、「Ruby(Sinatra)+Postgres の開発をローカルでやろう! Vol.2 ~無限 Docker Compose 編~」ということで、いつもは Cloud9 で運用されている Web サービスコースの開発環境を Docker Compose で建ててみたいと思います!

この記事は昨日と 2 日間に分けて投稿されており、1 日目はローカルに必要なソフトウェアを全部インストールして開発環境を構築する方法をご紹介しました!
興味あればぜひ読んでみてください。

**P.S. 1 日目の記事は [こちら](https://qiita.com/isso_719/items/e83b8fe8d6c6efa229e7)!*

元記事を表示

今日からあなたも競プロ出題者!ブラウザ上で動作するジャッジシステム OnBrowserJudge

# 要約

– ブラウザ上で動作するジャッジシステムを作りました。
– そのため静的ファイルを置ける場所さえあれば、他にサーバーやアカウント等を用意する必要はありません。
– 言語は現在 Ruby, Python, JavaScript に対応。
– [Ruby の例](https://nodai2hitc.github.io/onbrowserjudge/examples/collatz_ruby_jp.html)、[Python の例](https://nodai2hitc.github.io/onbrowserjudge/examples/collatz_python_jp.html)、[JavaScript の例](https://nodai2hitc.github.io/onbrowserjudge/examples/collatz_javascript_jp.html)
– 自由度が高く、さまざまな形式の問題が作成可能です。
– 例えば AtCoder のように標準入力・出力を用いる問題だけでなく、LeetCode のように関数を作成する問題や、事前に代入された

元記事を表示

NESエミュレータを作る-キャラクターROM見てみる編

[PONOS Advent Calendar 2022](https://qiita.com/advent-calendar/2022/ponos) 22日目です。
昨日は[@MilayYadokari](https://qiita.com/MilayYadokari)さんの[Unityでお手軽にスクロール実装!Simple Scroll-Snapの紹介!](https://qiita.com/MilayYadokari/items/d19441e94122dd504556)でした。

[NESエミュレータを作る-CPUちょっと理解編](https://qiita.com/ackyla/items/c48b05ee4e67596f6130)の続きです。
今回はキャラクターROMの中身を見ていきます。
# この記事の目標
キャラクターROMに入っているスプライトを見て楽しもう!
![Screen Shot 2022-12-21 at 15.28.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3567

元記事を表示

Ruby 3.2 のIRBの新機能

これは[Rubyアドベントカレンダー2022](https://qiita.com/advent-calendar/2022/ruby)の22日目の記事です。

# binding.irb のすすめ

8年前に [今更聞けないpryの使い方と便利プラグイン集](https://qiita.com/k0kubun/items/b118e9ccaef8707c4d9f) という記事を書き、そこから長い間 `binding.pry` を愛用していた。`binding.irb` も `binding.pry` も使ったことがないよ、という人はご一読をお勧めしたい。

当時PryにあったIRBに対する優位性のうち、時間が経っても常に使い続けた機能といえば `binding.pry`の存在、`$` (`show-source`)、`@` (`whereami`)、`ls` とその `-G` (grep) オプション、デバッグ機能 (要pry-byebugプラグイン) という感じで、他はまあたまに使うかもねくらいの感じになったのだが、なんとこれらはRuby 3.2ではIRBで全て使えるようになった。

元記事を表示

チームで複数のAWSアカウントを運用するときのそこそこ良い感じのID管理方法

これは [NTTテクノクロスアドベンドカレンダー2022](https://qiita.com/advent-calendar/2022/ntt-tx) の22日の記事です

# 自己紹介
こんにちは、NTTテクノクロスの諸星(@Echos)です。
業務としてはDX推進に関連する業務に従事しております。
特にデータ分析・ログ活用等、お困りなことがありましたら是非ご相談ください。

# 背景説明
上記DX業務を遂行するなか、従属的な業務といたしまして基盤環境として利用しているAWSの管理なども行っております。

ここで突然ですが質問です。
**『皆さんAWSアカウントをいくつ管理していますか?』**
1環境?10環境?それとも100環境?風の噂では10,000環境以上という人もいるみたいですね。怖い・・・

さすがに10,000はいかないまでも、弊社チーム内も様々なお客様にサービス展開をさせていただいてる関係上それなりの環境数を預からせていただいています。

ここで多くのAWS管理者が頭を悩ますのがAWSのID管理問題かと思います。
弊社チーム内もご多分に漏れずこの問題を抱えており、以下

元記事を表示

【Rails】楽天APIの導入

#概要
備忘録として楽天APIの用いて検索する機能の実装方法をまとめます

#参照
以下の記事を参考にしました。
ほとんど同じですが、上手く行かなかったところを自分なりに修正しました。
https://qiita.com/nabenomoto/items/6453c4577647cb8995d3

#完成図
![rakuten.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2287171/12ff2948-de2a-6170-6dc3-578b0302d1cc.gif)

#API取得方法
こちらの記事で取得方法を詳しく解説してくださっているので、参考にしてみてください。
https://freesworder.net/rakuten-api-rails/
#完成図

#アプリの作成
“`ruby:ターミナル
$cd desktop
$rails new rakuten_sample
$cd rakuten_sample
“`
#Gemをインストール
“`

元記事を表示

Procって何?

## はじめに
“`Proc“`って知ってますか?僕は知らないです。

“`ruby
scope :old, -> { where(‘year_published < ?', 50.years.ago )} ``` Railsだと、上記のように```model```に```scope```を定義したりしますが、これは```lambda```によって```Proc```オブジェクトが生成されています。 Railsを触っていると```Proc```にはちょくちょく出会うので、出会った時にビビらないようにまとめたいと思います。 ## Procとは https://docs.ruby-lang.org/ja/latest/class/Proc.html >ブロックをコンテキスト(ローカル変数のスコープやスタックフレーム)とともにオブジェクト化した手続きオブジェクトです。

らしいです。処理自体をオブジェクトにすることができます。

**Proc**は**Procedure**を意味しています。

“`ruby
square = Proc.new{|a| a ** 2

元記事を表示

Stimulus リファレンス: アウトレット

:::note
この記事は[Google翻訳](https://translate.google.co.jp/)の結果を編集したものです。
:::

https://stimulus.hotwired.dev/reference/outlets

アウトレットを使用するとCSSセレクターを使用して別のStimulusコントローラー内からStimulusコントローラーインスタンスとそのコントローラー要素を参照できます。

アウトレットを使用するとコントローラー要素でカスタムイベントをディスパッチする代わりにコントローラー間の通信と調整が容易になります。

Stimulusターゲットと概念的には似ていますが、Stimulusコントローラーインスタンスとそれに関連付けられたコントローラー要素を参照するという違いがあります。

“`html

元記事を表示

Rails 自分用

controllerに処理を書く
“`ruby:controller.rb
def “html.erbとつなげる名前” ⇒ここに書いたものがhtml.erbとつながる(?)
#処理を書く
end

#通常の処理
def 〇〇〇
senaka = “タヌキのせなか”
@html.erbで使う名前 = “タヌキのおなか”(変数など)
@html.erbで使う名前2 = senaka
#html.erbで<%= @以下 %>で上記の文を出力できる
end

#select文
def □□□
@html.erbで使う名前(html.erbと書く) = SQLの名前.all ⇒ 全検索
.find(params[:検索したいデータのメンバ名]) ⇒ SQLなどのWHERE id = #{id} データ名で検索してそれに該当するカラムを取り出す。
end

#カラムを新規作成する際に呼ぶメソッド
def new
@html.erb = SQLの名前.new

#新規作成文
def c

元記事を表示

Google超え(?)の安全・高速認証ができるCloudflare TurnstileをRailsに導入してみた

## TurnstileとCHAPTCHA
今回はTurnstileとCHAPTCHAについて説明しTurnstileをRailsのアプリに導入していきたいと思います。
先日CloudflareからTurnstileという認証テストのβ版が発表され、ユーザーのプライバシーを担保し高速なUXを提供し無料で利用できるということで従来のCAPTCHAの代替となりうるのではないかとされています。

> Turnstile は、CAPTCHA の「ユーザーフレンドリーでプライバシーを保護する代替手段」として提示されています。プレス リリースによると、Cloudflare によると、通常、通過に平均 32 秒かかる人物の確認に使用されるインタラクティブなチャレンジが不要になり、プロセス全体が 1 秒に短縮されます

https://www.cloudflare.com/ja-jp/press-releases/2022/privacy-preserving-captcha-alternative/
### CAPTCHAの背景

CAPTHCAというのはサービスを操作しているのが人間かbotか

元記事を表示

ruby 練習問題1(アウトプット用)

“`ruby
puts hash.keys
puts hash.values
““
上記のメソッドを実行した時に
“`ruby
one
two
three
1
2
3
“`
とターミナルに表示されるような変数hashを作成するためのコードをシンボルを使って記述する問題。

以下、模範解答
“`
hash = { one: 1, two: 2, three: 3 }
“`
以下、解説

まずシンボルの理解。
シンボルを使うことで数値として扱うので処理速度が速くなる。よってハッシュはシンボルを使用することが多い。
シンボルを使ってキーを記述する方法はキーの後に:をつける。
“`
hash = {キー: 値}
“`
keysメソッド、valuesメソッド
両方ともHashクラスで使用できるメソッド。
オブジェクト.keysでハッシュに含まれるキーを取得
“`
hash = { one: 1, two: 2, three: 3 }

puts hash.keys
one
two
three
“`
オブジェクト.valuesでハッシュに含まれる値を取得
“`
hash =

元記事を表示

RubyonRailsチュートリアル:実践メモ【目次】

#### 【第一章】
– [ターミナルを開く方法](https://qiita.com/suzuki_q/items/59fea2e882197f562ead)
– [ルートの設定方法](https://qiita.com/suzuki_q/items/755ed1a2602c20b12b50)
#### 【第二章】
– [Gitのバージョン管理下に置く](https://qiita.com/suzuki_q/items/3d9fdc8b79a6741b2b41)

#### 【第三章】
– [コントローラの新規作成](https://qiita.com/suzuki_q/items/2b3d5e31787a08d00759)
– [ローカルサーバーの使用方法](https://qiita.com/suzuki_q/items/c35c495de24d30abb32b)

元記事を表示

Windows10にRedmineをインストールした

# Windows10 に Ruby3.1 + Redmine 5.0.4 をインストールした作業メモ

## Redmine とは
公式サイトを見ても分からない人がこの記事を読んでも理解できるわけがないので、ここでは説明しない。スキルのある人は公式サイトを見ていただけると有難い。

https://redmine.jp/

2022年現在、Redmine のインストール方法を検索したら Redmine packaged by Bitnami を使ってインストールする的な内容が殆どだった。パッケージを使えばコツコツとパーツを揃える必要がないので楽なのは分かる。Ruby や mysql を全部自前で入れていくのは面倒なので流行らないのだろうか。

今までに Redmine をインストールした経験は何度かあって、仕事用に Linux にも入れたし、個人的に自分でプロジェクトを管理するために、Windows にインストールしたこともあった。その経験があったので、そんなに面倒だったかな、割とサクっとできたような気もするけど…と思って自分で全部やってみたら、案外手強い。ハマった所は隠蔽して書いて

元記事を表示

Railsアプリのrubyのバージョンを2.7から3.1へ上げる作業を1日で終わらせるために大切なこと

# はじめに

お久しぶりの投稿となったQiita。
最近はRails書きながら、AWS構築したり、python書いたり、typescript書いたりな生活です。
たまにはなんか書いてみようかと筆を取りました。
今回はruby2.7を使っていたRailsアプリをruby3.1へアップグレードしたという事例をもとに
__やっておいてよかったこと__ を紹介していきます。

# 結末は2行で

– rubocopは最初から
– テストカバレッジの目標は100%

# アップグレード前の状態

さてアップグレードの話をする前に、アップグレード前の状態について説明しておきます。

アプリケーションとしては2017年頃に開発が始まったもうすぐ6年生。
ruby2.4から始まり、2.7までは毎年順調にアップグレードされていたアプリです。

## コントローラー数等

`rails stats`の結果より

“`
+———————-+——–+——–+———+———+—–+——-+
| Name

元記事を表示

グループごとに投稿できる機能

こんにちは。寒すぎて凍えている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版)
著作権について軽くネットで調べたら、
✅文章は丸写しすることはできない
✅プログラムも丸写しすることはできない
✅引用はできるが改変は一切でき

元記事を表示

OTHERカテゴリの最新記事