- 0.0.1. 【Ruby】Railsでリクエストのバリデーションを行うライブラリ`rails_param`
- 0.0.2. Dockerを導入しよう――Rails、Compose V2編
- 0.0.3. Ruby on rails JqueryとBootstrapが反映されない
- 0.0.4. homebrew tapリポジトリを作ってみる
- 0.0.5. バリデーションが実行された後、jsが機能しない
- 0.0.6. [Ruby] rescueの中でreturnするとちゃんと関数からreturnしてくれる
- 0.0.7. WIP【Viewがレンダリングされるまでの技術とその理解 / Aaron Patterson 】Aaron PattersonさんがYouTubeで説明していたコードにビューを付けてみる
- 1. users#index
- 2. users#new
- 2.0.1. paiza POH code_and_sql #異世界転職エンジニア
- 2.0.2. Ruby3.1を触ってみる(error_highlight)
- 2.0.3. ActiveRecord::Enum
- 2.0.4. 【備忘録】Rubyの実行方法と標準出力メソッドの違いについて
- 2.0.5. find/ find_by/whereの違い
- 2.0.6. bundle install で `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/' と言われてうまくいかない
- 2.0.7. [Tips]insertメソッドでコールバックを発火させずに単一のレコードを作成する(Rails)
- 2.0.8. 【もうやらかさない】開発DBのデータを全部消しちゃったお話(改善策もあるよ)
- 2.0.9. The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window's load event.
- 2.0.10. Rubyのクラスについて
- 2.0.11. undefined method `permit' for "1":String に手こずった。
- 2.0.12. 完全未経験が2ヶ月半で一からWebアプリを作ったお話
- 2.0.13. Userモデル、usersテーブル作成とバリデーション【10日目】
【Ruby】Railsでリクエストのバリデーションを行うライブラリ`rails_param`
## 概要
Railsでリクエストのバリデーションを行う場合、[Rails基礎 ストロングパラメータとバリデーション](https://hpsuzucat.hatenablog.com/entry/2020/10/24/224143)の記事にある通り、ApplicationRecordの機能を使用する方法などが挙げられます。もちろん、この方法でも全然良いのですが、ApplicationRecordのモデルに通す前に、controllerでバリデーションしたい時もあるなと感じました。
何かないかなと調べてみた結果、`rails_param`というライブラリが良さげだったので、今回少し紹介します。## 機能など
[nicolasblanco/rails_param](https://github.com/nicolasblanco/rails_param)に、ライブラリのReadmeがあります。パラメータの、型指定や、必須チェック、最小値・最大値など基本的なチェックは出来そうです。また、項目毎にエラーのメッセージもカスタムで設定できます。## 実装サンプル
以下はAPIで、文字列の
Dockerを導入しよう――Rails、Compose V2編
Railsチュートリアルのサンプルアプリを例にDockerを導入したいと思います。
今までなんとなーくで済ませてきたので公式ドキュメントをがっつり読んで理解します。
Docker公式が[Rails向けのQuickstart](https://docs.docker.com/samples/rails/)を公開しているので、その他公式のドキュメントも参考にしつつ進めていきましょう。
なお、[公式のブログ](https://www.docker.com/blog/announcing-compose-v2-general-availability/)によるとDocker Compose V1は非推奨であり2023年4月までにV2への完全な移行を予定しているとのことです。従って、特に理由がなければCompose V2を使用しましょう。## 環境
– WSL2 / Ubuntu 22.04
– Ruby 2.6.3
– Rails 6.0.4
– Docker 20.10.17
– Docker Compose version v2.6.0[Ruby on Rails チュートリアル(
Ruby on rails JqueryとBootstrapが反映されない
今日は、RailsのTutorialsでJqueryとBootstrapをインストールした後、Dropdownの反映がされなかったので、その対処法についてまとめました。
まずは、こちらのコードを実行しました。
~~~app/javascript/packs/application.js
//= require jquery
//= require bootstrap
~~~そして、
~~~app/assets/stylesheets/custome.scss
@import “bootstrap”;
~~~
を追加しました。
しかし、これでは動かず、、~~~app/layouts/application.html.erb
homebrew tapリポジトリを作ってみる
# 序
macOS(またはLinux)用パッケージマネージャー — Homebrew
https://brew.sh/index_ja
を自宅鯖でも利用しているが、
homebrewにないものについて個別にビルド・インストールするのもダルくなってきた。# リポジトリを作る
homebrew tapのformulaファイルの置き場所 - 年中アイス
https://reiki4040.hatenablog.com/entry/2020/02/18/080000
を参考にリポジトリを作成する。## 1
githubに homebrew-tap というリポジトリを作成する。
例:
https://github.com/tknr/homebrew-tap## 2
homebrewリポジトリのテンプレートを作成する。前提:
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
実行・インストール完了後にzhlynn/zsig
バリデーションが実行された後、jsが機能しない
# はじめに
本記事はプログラミング初心者が、railsの学習を進めながら、躓いた部分、解決した箇所、またそれらの解決方法を備忘録も兼ねてまとめているものです。
最初はprogate。そのあと、「現場で使える RubyonRails5 速習実践ガイド」(通称)「現場Rails」を参考に進めていきました。
そのため、記事の内容には誤りがある可能性があることをご理解ください。
誤りがあればお手数ですが、ご指摘いただければと思います。よろしくお願いします。# 環境
Ruby 3.1.2
Rails 7.0.3.1# 問題のエラー
バリデーションが実行された後に、jsが機能しなくなってしまった。
![スクリーンショット 2022-08-21 23.01.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737125/d21d9acd-6b03-d61f-64d5-11b3a00428ae.png)
![スクリーンショット 2022-08-21 23.01.30.png](https://qiita-
[Ruby] rescueの中でreturnするとちゃんと関数からreturnしてくれる
本題の通り、rescueの中でreturnするとちゃんと関数からreturnしてくれる。
期待通りで安心した。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534442/a88a42b0-8e72-1ac5-5462-7f69fc60c5ec.png)
WIP【Viewがレンダリングされるまでの技術とその理解 / Aaron Patterson 】Aaron PattersonさんがYouTubeで説明していたコードにビューを付けてみる
```
.
├── app
│ ├── controllers
│ │ ├── action_controller.rb
│ │ ├── application_controller.rb
│ │ └── users_controller.rb
│ └── views
│ └── users
│ ├── index.html.erb
│ └── new.html.erb
├── application.rb
├── rack_router.rb
└── server.rb
``````html
users#index
```
```html
users#new
```
```ruby
require 'socket'
require './application'port = 3000
server = TCPServer.open(port)loop d
paiza POH code_and_sql #異世界転職エンジニア
## SQL
同じデータベースを使う(取得する条件だけが徐々に複雑になっていく)のが面白く感じました。
### 魔法使いの街(d1)
```sql
SELECT id, name FROM Hell;
```### 果ての平原(d2)
```sql
SELECT id, name, str FROM Hell ORDER BY str DESC LIMIT 5;
```### 砂漠のオアシス(c1)
```sql
SELECT id, name, cost FROM Hell WHERE cost <= 10; ``` ### 禁断の洞窟(c2) ```sql SELECT Hell.id, Hell.name, Element.name AS element FROM Hell INNER JOIN Element ON Hell.element_id = Element.id WHERE Element.name = "Earth"; ``` ### 精霊の村(b1) ```sql SELECT Hell.id, Hell.name, Eleme
Ruby3.1を触ってみる(error_highlight)
# 0. はじめに
[前回](https://qiita.com/Satoooon/items/734ef8cdecba2725943f) に引き続きRuby 3.1の新機能について動かしながら紹介しようと思います。
今回は error_highlight になります
# 1. リリースノートを見てみる
> error_highlightという組み込みgemが導入されました。これにより、バックトレース中でエラーが発生した詳細な位置が表示されます。
このgemはデフォルトで有効になっています。--disable-error_highlightコマンドラインオプションを指定することで無効化できます。詳しくはruby/error_highlightリポジトリを見てください。引用: https://www.ruby-lang.org/ja/news/2021/12/25/ruby-3-1-0-released/
# 2. 触ってみる使い方を [README](https://github.com/ruby/error_highlight) を拝見しながら触ってみます
```sa
ActiveRecord::Enum
## Enum is 何
- enumは``列挙型``## 定義例
``` ruby
class Book < ApplicationRecord enum sales_status: { reservation: 0, # 予約受付中 now_on_sale: 1, # 発売中 end_of_print: 2, # 販売終了 } end ``` #### 保存のされ方 - シンボル、文字列、数値を渡しても戻り値が"now_on_sale"と表現される ``` ruby irb(main):001:0> Book.create(sales_status: :now_on_sale)
=> #irb(main):002:0> Book.create(sales_status: "now_on_sale")
=> #irb(main):003:0> Book.create(sales_s
【備忘録】Rubyの実行方法と標準出力メソッドの違いについて
## はじめに
本記事は、[Rubyがミニツク](http://www.minituku.net/)の学習内容をまとめたものです。
今回は、Ruby入門コースの1章をやります。## まとめ
* Rubyのプログラムを実行する方法は幾つかあり、代表的な方法として以下の手法がある。
・rubyコマンド
・irb
・-eオプション* 標準出力のメソッドには、主に3種類ある。各メソッドには、次のような違いがある。
・print: 最後に改行を行わない。
・puts: 最後に改行を行う。
・p: 最後に改行を行う。文字列を出力する場合は""で囲まれる。## Rubyのプログラムを実行する方法
・rubyコマンド
・irb
・-eオプションまずは、自分の環境にRubyがインストールされているか確認する。
```:ターミナル
$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-darwin20]
```#### 方法1 rubyコマンドで実行する
テキストエディタを用いて、以下のプログラムを作成し保存
find/ find_by/whereの違い
## バージョン
- Ruby 2.6.6
- Rails 6.0.3## find/ find_by/whereの違い
### find
- 検索条件に引っかかる場合
``` ruby
pry(main)> Book.find_by(1)Book Load (0.2ms) SELECT `books`.* FROM `books` WHERE `books`.`id` = 1 LIMIT 1
=> #
``````ruby
pry(main)> Book.find(1).id ## データの中身を取得するとき
=> 1
```- 検索条件に引っかからない場合
- ``ActiveRecord::RecordNotFound``が発生
```ruby
pry(main)> Book.find(1000)
Book Load (0.
bundle install で `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/' と言われてうまくいかない
時間ないので、雑に忘備録として、一旦あげておきます
## 問題
```Gemfile
gem 'mysql2', '~> 0.5.3'
```こんな感じでGemfileに`mysql2`を入れようとしたときに
```
bin/bundle install
```
って入れても
```
An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling.In Gemfile:
mysql2
```
こんなエラーが出るわけですよね。書いてある通りに
```
gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/
```
と入れても
```
ld: library not found for -lssl
```
[Tips]insertメソッドでコールバックを発火させずに単一のレコードを作成する(Rails)
## コールバックを呼ばずにデータを作りたい
Railsでレコードを作成する時、コールバックを発火させずにデータを作成したい時が(基本的にない方がよいですが)ごく稀に存在します。
データを大量に作る時は、Rails6以降なら下記のように[insert_all](https://railsdoc.com/page/insert_all)を使うと良いでしょう。```ruby
Article.insert_all([
# created_at、updated_atが存在しrecord_timestampsをfalseにする場合、attributesの中に書いておく必要があるので注意
{ title: "How to use qiita", author_id: 1 },
{ title: "Why does elasticsearch use inverted index?", author_id: 2 }
])
```しかし、一つのレコードしか作らないのに`insert_all`を使うために配列を作るのは少々大仰な気がします。
## そこでinsertメソッド
【もうやらかさない】開発DBのデータを全部消しちゃったお話(改善策もあるよ)
## はじめに
どうも、もきおです。未経験から自社開発企業に入社して半年以上経ちましたがつい一週間前くらいに盛大にやらかしたのでその際のお話をしていきたいと思います。Slackでの会話
先輩「あれ?開発DBのデータ消えた・・・?」
メンバー「僕もDB見れなくなりました、、」
先輩「全部消えてるよね、、」この時ハンパない冷や汗をかいてました。心当たりがめちゃくちゃあったからです。
そう、開発DBのおそらく何千万というデータというデータを消してしまったのは紛れもなく自分でした。## なぜデータを消してしまったのか?
毎回テストを走らせるためにテスト用DBを作成しているのですが、テスト途中で止まってしまいそのまま進まないという事象が起きていました。
```ruby:
rails db:create Rails_ENV=test
rails db:migrate Rails_ENV=test
```
そのためmigrateが上手くできていないと感じ、一旦テストDBをリセットしようとしたら``test``を指定せず以下のコマンドを打ってしまい開発DBのデータを全てリセットしてしまった
The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window's load event.
## はじめに
RubyonRailsでアプリを開発していた時にjsを用いて写真プレビュー機能の作成時に起こったエラーです。
今回は2つの解決法を使って解説しましたので自分に合った解決法が見つかれば幸いです。### 使用する環境
- MacOS(M1)
- Rails 6.1.4
- Ruby 2.6.3
- yarn 1.22.17
- Homebrew 3.5.0### エラー文
「The resource ファイル名 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it has an appropriate `as` value and it is preloaded intentionally.」## 解決法1:特定のページでのフルリロードを実行する
Before
```application.html.erb
<%= javascript_pack_tag "application"
Rubyのクラスについて
## コード
```
class Student
def initialize(name)
@name = name
enddef avg(math, english)
return @name,(math + english)/2
endattr_accessor :name
enda001 = Student.new("sato")
p a001.name, a001.avg(30,70)
```
## 実行結果
```
"sato"
["sato", 50]
```
## コード解説
### `a001 = Student.new("sato")`
- `クラス名.new(引数)`により、引数を使ってにinitializeメソッドが実行され、インスタンスが生成される
- インスタンスとはそのクラスに由来するオブジェクト### `@name = name`
- `@変数`はインスタンス変数と呼び、クラス内のどこでも参照できる
- 何度も使うような変数を定義する### `a001.avg(30,70)`
- `インスタンス.クラス内で定義し
undefined method `permit' for "1":String に手こずった。
# はじめに
本記事はプログラミング初心者が、railsの学習を進めながら、躓いた部分、解決した箇所、またそれらの解決方法を備忘録も兼ねてまとめているものです。
最初はprogate。そのあと、「現場で使える RubyonRails5 速習実践ガイド」(通称)「現場Rails」を参考に進めていきました。
そのため、記事の内容には誤りがある可能性があることをご理解ください。
誤りがあればお手数ですが、ご指摘いただければと思います。よろしくお願いします。# 環境
Ruby 3.1.2
Rails 7.0.3.1```ruby:new.html.slim
- if @user.errors.present?
ul#error_explanation
- @user.errors.full_messages.each do |message|
li = message
dl
= form_with model: @user, url: '/users', local: true do |f|
.form-group
f.label 名前
完全未経験が2ヶ月半で一からWebアプリを作ったお話
# はじめに
ポートフォリオとして作成したWebアプリの紹介記事です。
アプリを作成する際に自分が何を考えて作成したのか、その過程をご紹介します。
苦労したことや楽しかったことなどもまとめましたので、是非最後まで読んでいただければと思います!# 簡単に自己紹介
* 商社の営業マンとして働く29歳
* ポートフォリオ作成前は、Progateで基礎学習、Railsチュートリアルを一通りした程度# アプリの概要と開発背景
### アプリ概要
* 自分の欲しいものを管理して支出予測するアプリです。
* サービス名は『Wantest』にしました。
* 欲しいものを登録して一覧化し、その合計金額を表示させます。### 開発背景
* アプリの制作理由
みなさんは欲しいものを買うか迷ったり、欲しいものを買ってみて後悔した経験はありませんか?
私自身、本を買っても読まなかったり、ゲームを買っても結局やらなかったりと、買って後悔した経験が多々あります笑。
このアプリはそんな経験を少しでも減らせればという思いで開発に至りました。* 誰のどんな課題を解決するか
**欲しいものを買うか迷っている
Userモデル、usersテーブル作成とバリデーション【10日目】
# 概要
- Userモデルを作成
- usersテーブルを作成
- TDDでバリデーション# 1. モデルとマイグレーションファイルの作成
- `rails g model user`でモデルを作成
- 自動的にマイグレーションファイルが生成される
# 2.マイグレーションファイルの編集
- マイグレーションファイルの中身を編集
# 2. テーブル作成
- `rails db:create`でusersテーブルを作成
# 3. モデルの編集
- rspecでテストを書いてfailedを確認
- モデルにvalidation書く
- テストが通るか確認# その他
- bcryptをgemでインストール
- has_secure_passwordでパスワードをハッシュ化
- パスワードのカラム名はpassword_digestへ
- 一意性(uniqueness)のバリデーションはDBレベルでも行う# 参考
- [Ruby on Rails チュートリアル](https://railstutorial.jp/chapters/modeling_users?version=6.