- 1. Your Ruby version is 2.6.3, but your Gemfile specified 2.7.1
- 2. Rails の Strong Parameters が不要なパターン
- 3. 【10分でできる】笑っていいとも100分の1アンケートのRailsアプリを作ってみた
- 4. ?【初学者用】Railsのエラーメッセージを日本語化する
- 5. ActiveRecord attribute methodまとめ(その②: Dirty編)
- 6. Ransackで大きな数値を入力したときに発生するActiveModel::RangeErrorを回避する方法
- 7. 100日後くらいに個人開発するぞ!day043
- 8. 【自分用】Rubyの基礎を振り返る。②
- 9. 【Rails】ActionCable~用語について~
- 10. 【Laravel・Rails】親が削除されたらリレーション先の子テーブルも削除する方法まとめ
- 11. RailsでDB内を確認したい時
- 12. embulk-output-bigqueryインストール時にRuby version >= 2.5でエラーになる問題
- 13. # Ruby on Rails(ruby3.0系) の環境構築 ※Windows
- 14. Ruby-FFIでは関数はクラス変数に登録されているが、Fiddleではクラスインスタンス変数に登録されている
- 15. 100日後くらいに個人開発するぞ!day042
- 16. 【Rails】rescue_fromによる例外処理
- 17. 【自分用】Rubyの基礎を振り返る。①
- 18. TECH CAMP 3日目 ~Ruby~
- 19. 【aws-sdk-dynamodb】Aws::DynamoDB::Errors::ValidationException The provided key element does not match the schema
- 20. Rubyのハッシュを要素にもつ配列とクラス(インスタンス)の違いついて初心者ながら整理する
Your Ruby version is 2.6.3, but your Gemfile specified 2.7.1
## 概要
bundle installしたら「Your Ruby version is 2.6.3, but your Gemfile specified 2.7.1」エラーが出たので解決方法を書きました。
1人でも多くの人の役にたてればと思います。## はじめに
### 使用する環境
– MacOS(Intel)
– Rails 6.0.3
– Ruby 2.6.3
– yarn 1.22.17
– Homebrew 3.5.0## 状況
bundle installしたら上記エラーが出た。
エラー文はローカルの環境のrubyは2.6.3だけど、gemfileに記述されてるrubyは2.7.1になってるから合わせてねってことRbenvでインストール可能なRubyのバージョンを確認
“`
$ rbenv install -list
“`
バージョンを指定してインストール
“`
$ rbenv install 2.7.1
“`
上記のrbenvでインストール可能欄に入ってなくても直接指定することでインストールすることが可能です。
反映する
“`
$ rben
Rails の Strong Parameters が不要なパターン
# はじめに
最近 Rails に触れる機会があり、Strong Parameters について調べた際にタイトルの内容が知りたかったのですが、書かれている記事を見つけられなかったのでそのことを。
Ruby 自体も含め、しっかり絡んだことがなかったので用語などが Ruby 界隈と合っていなかったりしたらご容赦ください。
先に Strong Parameters について簡単に触れますが、不要な場合は「[Strong Parameters が不要なパターン](#strong-parameters-が不要なパターン)」からお読みください。
# Strong Parameters とは
詳しいところは検索すればいろいろ出てくるので割愛しますが、ざっくりいうと
**Post されたデータ( params )に対し、マスアサインメントを利用する際に意図しないパラメーターが使用されないようにする仕組み**
です。
マスアサインメントは、複数カラムを一括で指定する仕組み。
元々はモデル側で `attr_accessible` を使って許可を与えていたようですが、脆弱性を作りやすいこ
【10分でできる】笑っていいとも100分の1アンケートのRailsアプリを作ってみた
# はじめに
[GitHub](https://github.com/mzmz02/qiita_yes_no_app_sample)にコードを公開してるので,コードだけ知りたい方は飛ばしてもらって大丈夫です.“`:実行環境
Windows10
ruby: 2.6.10
Rails: 5.2.8
“`# 完成図
Herokuでデプロイしてるので,ぜひ試してみてください.結果画面↓
https://it-yes-no-app.herokuapp.com/posts/index
回答画面↓
https://it-yes-no-app.herokuapp.com/posts/new

# はじめに
今回はActiveRecordのattribute methodのうち、Dirtyメソッドをまとめていきます。
(2022年6月時点。Rails7.0対応。)
以前、[BeforeTypeCastの内容](https://qiita.com/maabow/items/33ad5328b192e3adb49e)をまとめましたが、今回のDirtyメソッドはBeforeTypeCastに比べて、より実用的なメソッドが多いと思います。# 検証環境
以下のschemaとmodelに基づいて検証を行なっています。
enumを利用しているので、実際にDBに入っている値と出力される内容が異なる箇所が存在します。
“` db/schema.rb
create_table “todos”, charset: “utf8mb4”, force: :cascade do |t|
t.string “title”
t.datetime “scheduled_at”
t.integer “status”
t.datetime “created_at”, null: false
Ransackで大きな数値を入力したときに発生するActiveModel::RangeErrorを回避する方法
## 解決したい問題
Ransackでは大きな数値を検索条件に入れると`ActiveModel::RangeError`が発生します。“`ruby
User.ransack(age_eq: 123456789012345678901).result
#=> ActiveModel::RangeError: 123456789012345678901 is out of range for ActiveRecord::ConnectionAdapters::SQLite3Adapter::SQLite3Integer with limit 8 bytes
“`SQLite3やPostgreSQLで確認する限り、SQL上は検索条件として大きな数値を入力してもエラーにはならないようです。
““sql
— (データが見つかるかどうかは別として)エラーにはならない
SELECT *
FROM users
WHERE age = 123456789012345678901
““またActiveRecordもエラーにはならないようになっています。
“`ruby
100日後くらいに個人開発するぞ!day043
## 今日はハッシュとシンボルを学んでみた!

## 今日の学び
### ハッシュ
* ハッシュは複数の値をまとめて管理する方法の一つで、それぞれの値にキーと呼ばれる名前をつけて管理する
* ハッシュの作り方
* `{キー1 => 値1,キー2 => 値2,キー3 => 値3}`
* ハッシュは変数に代入することができる
* 変数 = `{キー1 => 値1,キー2 => 値2,キー3 => 値3}`
* ハッシュの各要素の値は、対応するキーを使って、`ハッシュ[キー]`とすることで用いることができる
* `ハッシュ[キー] = 値`と書くことで、キーと対応している値を更新することができる
* ハッシュ[新しいキー] = 値と書くことで、ハッシュに新しい要素を追加することができる
* ハッシュにすでにあるキーを指定
【自分用】Rubyの基礎を振り返る。②
# はじめに
前回の続き。
【自分用】Rubyの基礎を振り返る。①https://qiita.com/hondano_gentuki/items/25d71553b200808cfc2a
# Rubyのあれこれ②
### クラス
クラスは、値の元となるものです。値の共通のルールを定義。
ここで決めるルールは、共通の属性と処理(メソッド)。例えるのであればクラスが設計図(雛形)でインスタンスが車(普通車・パトカー・スポーツカーなど。)
“`
class Car
# 変数やメソッドの定義
end
“`### インスタンス
クラスを元にして作られるデータ。クラスとは違い実態を持つ。### newメソッド
クラスは、定義しなくてもnewという特別なメソッドをはじめから持っている。
使用したクラスのインスタンスを生成して返す。
“`
# インスタンスを生成し変数で扱う
変数名 = クラス名.new
“`例:
“`
class Carend
fire_truck = Car.new # Carクラスのインスタンスを生成
puts fire_truck
【Rails】ActionCable~用語について~
## はじめに
実装の流れは長くなるので省略させていただきます。
自分が疑問に思ってノートに記録した物を記事にしていきます。## 前提条件
Ruby 2.6.3
Rails 6.1.5## 用語について
ActionCableとwebsocketを使用するにあたり、新しい用語がいくつか出てきました。
以下の通りです。・コネクション
通信方式のこと。プロトコルとしてはTCPがコネクション型、UDPがコネクションレス型。
TCPは一般的なHTTP/HTTPSリクエスト&レスポンスの通信で使用されている。
websocketの通信方法でも使用されており、websocketコネクションをオープンすることで通信を確立する。・コンシューマー
websocketコネクションのクライアントのこと。・チャネル
MVCでいうコントローラーの役割を果たす。
ボタンなどで発火されるとチャネルのアクションが実行されるみたいなイメージ?
チャネルはコンシューマーをサブスクライブ(利用登録)できる。
コンシューマーは複数のチャネルにサブスクライブされることが可能。・サブスクライバ
コンシュー
【Laravel・Rails】親が削除されたらリレーション先の子テーブルも削除する方法まとめ
## 環境
Laravel v9.5.1 (PHP v8.1.3)## Laravel
### cascadeOnDelete()
マイグレーションファイルでやる方法。“`php
Schema::table(‘posts’, function (Blueprint $table) {
$table->foreignId(‘user_id’)->constrained()->cascadeOnDelete();
});
“`https://readouble.com/laravel/9.x/ja/migrations.html?header=%25E5%25A4%2596%25E9%2583%25A8%25E3%2582%25AD%25E3%2583%25BC%25E5%2588%25B6%25E7%25B4%2584
### deleting()
modelにロジックを書く方法。
“`app/Models/User.php
protected static function boot()
{
parent::boot();self::dele
RailsでDB内を確認したい時
# はじめに
Rails 6.0.3を使用してローカル環境にてアプリケーションを作成中にアソシエーションを実装しようとしていて自分が作成したDBがどのようなcolumnを設定して、テストで入力している、user情報やuser_id、content内容などを確認して紐付けを行いたいと思う場面がありました。
その際に、ターミナル上で確認した時の内容を備忘録として記事にします。環境
Ruby: 3.0.1
Rails: 6.0.3# 設定内容
テーブルは3つ作成してあり、以下の3つ
– users
– blogs
– favoritesそれぞれにカラムを設定
__users column__
– name
– password_digest__blogs column__
– content
– user_id__favorites column__
– user_id
– blog_id# 発生していた問題
usersのid(デフォルトで作成されている)とblogsカラムのuser_idを互いに紐づけるため【usersのidとfavoritesのu
embulk-output-bigqueryインストール時にRuby version >= 2.5でエラーになる問題
コンテナにembulkをインストールしようとした際に以下のエラーが出て、embulk-output-bigqueryのインストールに失敗した。
“`
#16 10.54 ERROR: Error installing embulk-output-bigquery:
#16 10.54 jwt requires Ruby version >= 2.5.
“`
エラーメッセージにもあるように、原因としてはembulk-output-bigqueryが依存しているjwtのバージョンが22/6/6より2.4.0に上がったことで、要求Ruby versionが旧来の2.1から2.5に上がったことが原因。
https://rubygems.org/gems/jwt/versions/2.4.0https://zenn.dev/hiroysato/articles/35a26bbe466f0b
> Embulk 0.9.23に入っているJRubyのバージョンは9.1.5.0で、Ruby 2.3互換となっておりと記述があるように、Embulkの0.9系に入っているRubyは2.3系なので
# Ruby on Rails(ruby3.0系) の環境構築 ※Windows
この記事ではdockerでの仮想環境で構築するわけではなくCドライブにそのままrubyをインストールして環境構築をします。今からrubyやrailsを始めるという方向けです。
### バージョン
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x64-mingw32]
Rails 7.0.3
***
### rubyのインストール
[ruby公式](https://rubyinstaller.org/downloads/) から __Ruby+Devkit 3.0.4-1 (x64)__ をクリックしてダウンロードして下さい。
※バージョン確認コマンド
`ruby -v`
※rubyのバージョンが3.1系だと`rails new プロジェクト名`でrailsのプロジェクトを立ち上げる時に以下のエラーが発生してプロジェクトが上手く作られず、`rails s`で始めることが出来なくなります。
“`
Errno::ENOENT: No such file or directory – bs_fetch:open_current_file:
Ruby-FFIでは関数はクラス変数に登録されているが、Fiddleではクラスインスタンス変数に登録されている
## はじめに
Ruby-FFI と Fiddle はRubyからC言語の関数を呼び出せる便利なライブラリです。
* Ruby-FFIでは、`attach_function` メソッドを利用して、関数を登録します。
* Fiddleでは、`extern` メソッドを利用して、関数を登録します。それぞれ `Function` クラスが存在します。しかし何もしなければRubyではガベージコレクションが働いて関数を表現しているオブジェクトを開放してしまいます。開放された関数オブジェクトを呼び出そうとするとセグフォが発生してしまうはずです。ですから関数オブジェクトは、どこかのオブジェクトから参照されてGCから保護されているはずです。では `attach_function` や `extern` で作成した関数オブジェクトはどこに登録されているのでしょうか?
## Ruby-FFIではクラス変数
Ruby-FFIでは、関数はクラス変数に退避されています。クラス変数の一覧は、`class_variable` メソッドで閲覧できます。
“`ruby
HogeLib::FFI.clas
100日後くらいに個人開発するぞ!day042
## 今日は配列と繰り返し処理をやってみた!

## 今日の学び
### 配列
* 配列は複数の値をまとめて管理することができる
* 配列は[値1,値2,値3]のように作る
* 配列に入っているそれぞれの値を要素と呼ぶ
* 配列は値の一種なので変数に代入することができる
* 配列を代入する変数名は複数形にすることが多い
* 配列の要素の値も変数展開を用いて文字列の中に含められる
* 例:”私の名前はYamadaです”と出力したい場合
* `names=[“Yamada”,”Suzuki”,”Tanaka”]`
* `puts “私の名前は#{names[0]}です`### インデックス番号
* 配列の要素には前から順に「0,1,2,…」と数字が割り振られており、その番号をインデックス番号と
【Rails】rescue_fromによる例外処理
## はじめに
rescue_fromについて軽く調査したので記録する。この記事がだれかの役に立てば幸いです。
## 結論
raiseで発生させた例外を`rescue_from`で検知し、指定したメソッドの実行に繋げることができる。
### 詳細
大まかな使い方は以下の通りになります。
“`app/controllers/application_controller.rb
# Forbiddenの例外を捕捉した場合に、rescue_403メソッドを実行する
rescue_from Forbidden, with: :rescue_403private
def rescue403(e)
render status: :forbidden, json: { message: “アクセス権限がありません” }
end
“`Forbiddenの例外を発生さえる流れとしては、
“`app/controllers/application_controller.rb
# 管理者のみに実行権限を与える
def allowed_to_admin_user!
【自分用】Rubyの基礎を振り返る。①
# はじめに
今回はRubyに関して簡単にまとめていきます。
自分の復習用。自分で見て分かるようにまとめてあります。# Ruby
プログラミング言語の1つ。記述がシンプルで分かりやすい。
## Rubyの特徴
① Webアプリケーションの開発に特化している。
② データベースとの連携が容易。
③ 世界で幅広く使用されている。
④ 文法が覚えやすい。# Rubyのあれこれ
### rubyコマンド
Rubyに関するさまざまな操作が実行できる。
“`
ruby sample.rb
“`### irb
ターミナルから直接rubyを実行できる。### 文字列
プログラミングの中で文字を扱うための値。
`”ダブルクォーテーション”`か`’シングルクォーテーション’`で囲む。
文字列を連結する場合は”Hello” + “World”### 数値
“`
# 整数
10# 負の値
-10# 小数
3.14
“`
クォーテーションで囲まない。### メソッド
プログラミングにおける何らかの処理をまとめたもの。### lengthレングスメソッド
文字列をカウン
TECH CAMP 3日目 ~Ruby~
# 学習内容
– HTML
- `object-fit:cover;`,`object-fit:contain;`
- `opacity`
– Ruby
- getsメソッド、chompメソッド
- バックスラッシュ`\`
- .timesメソッド、.eachメソッド
- スコープ
- 引数、仮引数、実引数
- 戻り値
- メソッド
# 苦労したこと、改善
– 指定された文字色が#A0A0A0だったが数字の0を英語のOと入力したため、文字色が変わらなかった。
改善:数字の0やカンマピリオドなど似ている数字や文字に気をつけて入力する。できればコピペする。### メモ
本日初めてチーム内でもくもく会を開催しました。一人で作業しているよりも作業が捗りました。
少ないチームの中で開催すると、参加するのに勇気がいると思うので、同じ127期のメンバーにも声をかけて大人数で実施したいと思います。
【aws-sdk-dynamodb】Aws::DynamoDB::Errors::ValidationException The provided key element does not match the schema
環境
–“`yml
– OS: macOS Big Sur 11.5.2
– ruby: 2.7.1
“`問題
–“`ruby
# clientオブジェクトを用意
client = Aws::DynamoDB::Client.new(
access_key_id: ENV[‘AWS_ACCESS_KEY_ID’],
secret_access_key: ENV[‘AWS_SECRET_ACCESS_KEY’],
region: ENV[‘AWS_REGION’]
)# 特定のカラムの値を更新
client.update_item({
table_name: “test_table”,
key: {Id: 1},
update_expression: “SET #{column} = :val”,
expression_attribute_values: {‘:val’ => value }
})
“`上記を実行すると、以下のエラーが発生
“`
Aws::DynamoDB::Errors::ValidationExcepti
Rubyのハッシュを要素にもつ配列とクラス(インスタンス)の違いついて初心者ながら整理する
【編集履歴】
2022/06/09: コメントにて頂いた[ご指摘内容](https://qiita.com/ysk91_engineer/items/b9030301c209d3cbfa82#comment-c0ac6210ffd2ee015330)を元に修正# 何に困った?
ハッシュを要素にもつ配列と複数のインスタンス変数をもつインスタンスの扱い方がごっちゃになってしまったので、今一度整理します。
整理ポイントは
+ データ群のイメージ
+ 値の出力方法
+ each文で各要素データの出力記事最後に、僕が勘違いしたポイントも紹介します。
# ハッシュを要素にもつ配列
本記事ではハッシュを要素にもつ配列として以下のものを準備しました。“`ruby:hash_array.rb
hoges = [
{fuga1: “aa”, fuga2: “ab”, fuga3: 0},
{fuga1: “ba”, fuga2: “bb”, fuga3: 1},
{fuga1: “ca”, fuga2: “cb”, fuga3: 2}
]
“`## イメージを図で理