- 1. Railsでのユーザー認証の実装とbcryptの活用方法
- 2. [Ruby 3.1.4] 関数の可変長引数のに *array 展開で SystemStackError
- 3. Rubyで配列内のハッシュで同じキーの値を合算(inject、merge)
- 4. CORS設定でOPTIONSリクエストとヘッダが取得できない
- 5. rails sが起動しなくなった
- 6. RailsのHostAuthorizationによってELBのヘルスチェックがhealthyにならない
- 7. Rubyでデザインパターン (5) Singletonパターン
- 8. Ruby, Ruby on Railsのselectメソッドについて
- 9. カラム名.present?の省略方法
- 10. Rspec WrongScopeError発生
- 11. 【Ruby】between?でtime.zoneを範囲指定として渡す際の注意点
- 12. 【オブジェクト指向】デザインパターンについて
- 13. [Rails] 単一ファイルのRailsアプリケーションを作ってみた
- 14. RubyKaigi2024初参加者レポート
- 15. RubyXLで利用できる罫線の種類を調べる
- 16. erbからslimに変換する際の`File.exists?` メソッド使用についての解決方法
- 17. 【2024年6月】Rails7をWindows上で環境構築する方法
- 18. Ruby: ヘッダーを考慮した csv ファイルの読み込み
- 19. Ruby 練習問題 随時追加予定 (Range, Arrayとか)
- 20. 【Rails, MySQL, ORM】where(‘user.id’: 1)ってことができる
Railsでのユーザー認証の実装とbcryptの活用方法
## 流れ
### 1. Userのモデルとコントローラーを準備する
“`ruby
rails g model user username:string password_digest:string
“`“`ruby
rails g controller users
“`“`ruby
rails db:migrate
“`以下のファイルが生成されます:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824310/b76bc216-0e70-8824-13e6-2aa70659953d.png)`users_controller.rb`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3824310/38a56c5c-bb43-6430-b46c-4720f1c0165c.png)
`user.rb``user.rb` に以下のメソッドを追加します:
[Ruby 3.1.4] 関数の可変長引数のに *array 展開で SystemStackError
[SystemStackError]:https://docs.ruby-lang.org/ja/latest/class/SystemStackError.html
[ArgumentError]:https://docs.ruby-lang.org/ja/latest/class/ArgumentError.html
[NoMethodError]:https://docs.ruby-lang.org/ja/latest/class/NoMethodError.html
[組み込みライブラリ]:https://docs.ruby-lang.org/ja/latest/library/_builtin.html
[Hash#values_at]:https://docs.ruby-lang.org/ja/latest/method/Hash/i/values_at.html
[ruby 3.3 – ruby/hash.c L:2710]:https://github.com/ruby/ruby/blob/ruby_3_3/hash.c#L2710:::note warn
この記
Rubyで配列内のハッシュで同じキーの値を合算(inject、merge)
ポートフォリオ作成中に、「同一のキーを合算して、値を求める」必要があり、実装に時間を要したため、備忘録として投稿します。
## 実現したいこと
“`ruby
data = [
{ water: 9, retort_food: 3, mask: 3 },
{ water: 10, retort_food: 4, mask: 4 },
{ water: 11, retort_food: 5, mask: 5 }
]# 上記のデータで同じキーのものを合算
# data = { water: 30, retort_food: 12, mask: 12 }
“`## 完成形
“`
merge_data = data.inject do |old_data, new_data|
old_data.merge(new_data) do |_key, old_val, new_val|
old_val + new_val
end
end
“`
## 使用したメソッド### inject
> 配列等の要素を一つずつ繰り返して、ブロック内で処理する
CORS設定でOPTIONSリクエストとヘッダが取得できない
実装中に対応した内容を備忘録として投稿します。
## 発生した問題
フロントエンド(Nuxt.js)から、バックエンド(Rails)に対して、APIリクエストを投げるとCORSエラーが発生。
“`
Access to XMLHttpRequest at ‘http://localhost:3000/users/1’ from origin ‘http://localhost:8080’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.
“`
## 原因– ブラウザ側のセキュリティが強化されていて、意図しない挙動を防ぐために実装されている。
– もし仮に、ハッキングされるなどすると、
– フロントエンドとバックエンドでサーバーやドメインが別れている場合に、悪意のあるドメインにすり替えるなどができてしまう。
– 会員制サイトでログインするときに、ログインIDやパスワードを盗むことができてしまう。
–
rails sが起動しなくなった
`rails s`が動かない現象に遭遇したので、備忘録として投稿します。
## 発生した問題
下記エラーにより、`rails s`が起動しなくなった。
“`
% rails s
=> Booting Puma
=> Rails 6.1.5 application starting in development
=> Run `bin/rails server –help` for more startup options
Exiting
bin/rails:7: warning: already initialized constant APP_PATH
/Users/xxxx/workspace/app/bin/rails:7: warning: previous definition of APP_PATH was here
The most common rails commands are:
generate Generate new code (short-cut alias: “g”)
console Start the Rails co
RailsのHostAuthorizationによってELBのヘルスチェックがhealthyにならない
ポートフォリオをデプロイする際に発生した問題について、備忘録として投稿します。
## 発生した問題
Rails6 + AWSで下記の構成のようなアプリを開発していました。
Railsの`HostAuthorization`を利用し、`/api/health_check`というパスでALBからのヘルスチェックを行おうとしました。
しかし、Railsが403エラーを返し、ヘルスチェックが失敗してしまいました。## 原因
Railsの設定は下記のようになっていました。
![](https://raw.githubusercontent.com/nomikazu-x/post-zenn-qiita/master/images/prettier-plugin-astro-organize-imports/alb-esc-nginx-rails-rds.jpg)“`ruby:environments/production.rb
config.hosts << 'base_domain.com' ``` 原因は、 「ヘルスチェック時のホスト名がbase_domain.comでな
Rubyでデザインパターン (5) Singletonパターン
## この記事は何
デザインパターンについて、Rubyでどのような使い方ができるかをまとめた記事です。
デザインパターン自体の解説は詳しく行いません。## Singletonパターンとは
Singletonパターンとは、特定のクラスがインスタンスを一つのみしか生成しないことを保証するためのデザインパターンです。詳しくはこちらをご覧ください。
https://qiita.com/shoheiyokoyama/items/c16fd547a77773c0ccc1
## Rubyでのコード例
単純な実装を行うと、以下のようになります。“`rb
class Singleton
private_class_method :newclass << self def instance @instance ||= new end end end puts Singleton.instance == Singleton.instance ``` ```:出力結果 true ``` また、Rubyには`Singleton`モジュールがある
Ruby, Ruby on Railsのselectメソッドについて
### 読んで欲しい人
– selectメソッドがわからない人
– 過去の自分### 動作環境
– ruby 3.3.0
– Rails 7.1.3.3### selectとは
– Enumerableモジュールの一部
– 文字列、配列、ハッシュに対して検索を行えるメソッド**Enumerableモジュールとは**
– 繰り返し処理を行うためのモジュール
Enumerableモジュールに定義されているメソッドは全て`each`を用いて定義されてる。
`each`を基盤として、より複雑な操作を簡単に行うための道具箱がEnumerableモジュールという感じ。
### モデルに使う時
前提:下記のusersテーブルがあるとする
|id |name |email |
|—|—|—|
|1 |jojo |jojo@example.com |
|2 |dio |dio@example.com |
|3 |hoge |hoge@example.com |普通に情報を取得すると下記
“`ruby
User.all# 発行さ
カラム名.present?の省略方法
下の記事の内容は正しくありません。
~~カラム名.present?の省略方法がActiveRecordで元から用意されていたので、自分用に残しておきます。~~“`ruby
user = User.first
user.name? # user.name.present? と同意
# => true / false
“`~~rails cの補完機能を使っていると見つけました。
このような元から用意されてある動的なメソッドは、まだまだたくさんあるみたいなので、もっと勉強していこうと思います!~~
Rspec WrongScopeError発生
Rspecでテストを走らせた際に発生した問題について、備忘録として投稿します。
## 発生した問題
“`
Failure/Error:
raise WrongScopeError,
“`#{name}` is not available from within an example (e.g. an ” \
“`it` block) or from constructs that run in the scope of an ” \
“example (e.g. `before`, `let`, etc). It is only available ” \
“on an example group (e.g. a `describe` or `context` block).”`name` is not available from within an example (e.g. an `it` block) or from construct
【Ruby】between?でtime.zoneを範囲指定として渡す際の注意点
Rubyの`between?()`の返り値が想定と違かった原因をメモ。
“`Ruby:
now = Time.zone.now
start_time = Time.zone.parse(“2024/07/01 12:00”)
end_time = Time.zone.parse(“2024/07/31 23:59”)if now.between?(start_time, end_time)
~…
end
“`
データとしてはこんな感じ。
`now`が`2024/07/31 23:59`になったと仮定して動作を確認していたら
条件がfalseになってif文に入らなかった。
## 原因
`end_time`をparseしたときに秒数を指定していないので、
`now`が`23:59:00`以降になると分岐条件がfalseになってif文に入らない。
## 解決策
終了時刻は秒数を指定する。
“`Ruby:
end_time = Time.zone.parse(“2024/07/31 23:59”)
↓
end_time = Time.zone.parse(“2024/07/
【オブジェクト指向】デザインパターンについて
## デザインパターンとは
JavaやRubyなどオブジェクト指向言語において、よく使われる設計をパターン化したものです。
これを用いることでプログラムが再利用しやすくなり、読みやすいものとなります。## デザインパターンの種類
「GoF」のデザインパターンがあり、全23種の設計パターンに分けられており、大カテゴリーに分けると
「生産」「構造」「振る舞い」の3つに分けることができます。+ 生産
+ [Abstract Factory](#abstract-factory)
+ [Builder](#builder)
+ [Factory Method](#factory-method)
+ [Prototype](#prototype)
+ [Singleton](#singleton)
+ 構造
+ [Adapter](#adapter)
+ [Bridge](#bridge)
+ [Composite](#composite)
+ [Decorator](#decorator)
+ [Facade](#facade)
+ [F
[Rails] 単一ファイルのRailsアプリケーションを作ってみた
# はじめに
上記の記事で、気になる箇所がありました。
**1ファイルで動くRailsアプリケーションを作った**
これを見た時の自分は、「え?そんなことできるの?」と思いました。
https://greg.molnar.io/blog/a-single-file-rails-application/
上記記事の記載があったので、参考にして自分も作ってみました。
その内容をアウトプットいたします。# 実装
## 環境
– Ruby:3.2.2お好きなディレクトリで、`app.ru`を作成します。
“`rb:app.ru
# frozen_string_literal: true
require ‘bundler/inline’gemfile(true) do
source ‘https://rubygems.org’gem ‘rails’, ‘7.0.4’
gem ‘sqlite3’, ‘~> 1.4’
gem ‘puma’
en
RubyKaigi2024初参加者レポート
初めまして、Qiitaに初投稿させていただきます。株式会社キネカでWebエンジニアをやらせていただております。nikeです。
## はじめに
今回初めて、弊社のメンバーとRubyKaigiに参加させていただいたので、振り返りも兼ねてレポートとしてまとめます。恥ずかしながら技術的な内容は私の力不足もあり、ほとんどできませんが、今後初めてRubyKaigiに参加する人の参考になればなと思い書かせていただきます。https://rubykaigi.org/2024/
## 事前に準備したこと
#### Rubyコミッターの松田明さんによる「初心者のための RubyKaigi 入門 」
私が技術カンファレンス自体の参加が初めてなこともあり、かなり不安だったのですが、こちらを一読してからRubyKaigiにかなり臨みやすくなったなと感じています。私と同じようにRubyKaigi初参加を考えてる方是非!
RubyKaigi自体の目的、参加者の心構え、に関してかなり簡潔にまとめてくださっています。https://speakerdeck.com/a_matsuda/rubykaigi-int
RubyXLで利用できる罫線の種類を調べる
## 環境
Ubuntu 20.4
Ruby 2.6
Rails 5.2## はじめに
Excelファイルに対し、読み取りと書き込みの両方ができる、RubyXLというgemがあります。このgemのchange_borderメソッドを利用して、Excelのセルに罫線を引くことができます。このメソッドで使うことができる、パラメータと罫線の種類について調べてみました。
## change_borderの使い方
change_borderの使い方は公式サイトを見れば載っています。
公式サイト
https://github.com/weshatheleopard/rubyXL?tab=readme-ov-file#changing-borders-“`
# Possible weights: hairline, thin, medium, thick
# Possible “directions”: top, bottom, left, right, diagonal
worksheet.sheet_data[0][0].change_border(:top, ‘thin’)
erbからslimに変換する際の`File.exists?` メソッド使用についての解決方法
# はじめに
erbからslimに変換しようとしてエラーで詰まって調べてあまり有用な記事がなかったため
作成することにします(自分見直し用でもあります!)# 起きたこと
dockerコンテナ内で
“`bash
erb2slim app/views/users/ app/views/users/ -d
“`
をしてapp/views/users/内のerbファイルを一括でslimファイルに変換しようとしたところ
“`
NoMethodError: undefined method `exists?’ for File:Class
Use –trace for backtrace.
“`
とエラーが出て、できなかったので
“`bash
erb2slim app/views/users/ app/views/users/ -d –trace
“`
–traceオプションをつけてエラーが起きているファイルを特定したところ
“`
/usr/local/bundle/gems/html2slim-0.2.0/lib/html2slim/converter.rb:1
【2024年6月】Rails7をWindows上で環境構築する方法
「Railsをインストールできない」
RailsはWebアプリ開発フレームワークで初心者にもわかりやすいと言われます。
しかし、環境構築で挫折する人が多いのも現状です。
今回はRailsをWindows11で開発できるセットアップを行います。
せっかく始めるのに、何もできないまま終わりたくないですよね。
動画でサポートしていきます。
YouTubeを活用してぜひ始めてみてください。
結論は、WSL2を使いましょう。
# YouTubeでの解説-2024年6月24日投稿
Ruby 練習問題 随時追加予定 (Range, Arrayとか)
# はじめに
みなさん、こんにちは **torihazi**です最近、ReactとかRailsばっか触っていて
純粋なRubyに触れることを忘れていました。
初心者だからすぐに忘れるし、ひたすら爆速でやり続けるしかないと思うので
練習問題作ってやってみました!
解説とかは自分で色々調べてやってみてください
別解とかあれば是非是非!!
では行ってみましょう!!
# 環境について
Docker使っています!
ローカルでやるか Dockerでやるかはお任せします!
Rubyの単純な実行環境をDockerで作るにはどうしたらいいのか?も
含めて色々勉強になったのであえて隠しちゃってます!
各自自分で最初から作るかコピーなりしちゃってください!
めんどくさい人はPaiza.ioとかでもいいかと。Dockerfile
“`Dockerfile:Dockerfile
FROM ruby:3.2.0
WORKDIR /app
COPY . .
“`dock
【Rails, MySQL, ORM】where(‘user.id’: 1)ってことができる
業務開発でRailsを使用しており、ORMもよく使用しているのですが、業務開発を通して知った `where` 句の文法的なのをここで紹介していきます。
## where(column: value)
これはRailsのwhere句の一番オーソドックスな書き方だと思います。
whereをメソッドチェーンで繋げていけば `and` 句となり条件をより絞ることができます。
“`ruby
# e.g.
User.where(id: 1)
User.where(gender: “man”).where(name: “hoge”)
“`## where(column: [value])
これはいわゆる `where in` 句の書き方で、 `or` 検索をかけたい時は基本的にこの書き方が一番いい気がします。
若干話が変わりますが、SQLアンチパターンにおいて、 `or` 検索はインデックスが効かない `where` 句の書き方ですが、 `where in` 句はインデックスが効く書き方なので、もし `or` のような**和集合条件**でインデックスが効く検索をしたい場合は **`wher