- 0.0.1. 【Rails】マイグレーションファイル関連のコマンドまとめ
- 0.0.2. エラー文について①!
- 0.0.3. RailsのAPIをブラウザのコンソールから呼ぶ
- 0.0.4. Couldn’t find Schedule without an IDを解決する
- 0.0.5. 本番環境で写真投稿をすると500エラーが出る
- 0.0.6. 【RubySilver対策】Ruby特化のクイズサービスを作りました。
- 0.0.7. [Rails]has_oneやbelongs_toをリロード!削除されたときの挙動がreload_associationとreloadで違うので注意!
- 0.0.8. Ruby on Railsのscaffoldを使ってみる
- 0.0.9. 【422 Unprocessable Entity 】のバリデーションエラー、外部キー制約が原因でした。
- 0.0.10. 【個人用rails tutorial -3
- 1. 静的ページの生成
- 2. テストスイート(Test Suite)
- 2.0.1. Rails+React+MySQL+nginx+puma on Docker
- 2.0.2. 【個人開発】チーム開発にしてみたらメリットいっぱいな話
- 2.0.3. 【RSpec】Railsチュートリアル第6版 第8章
- 2.0.4. 【Ruby silver】範囲式 フリップフロップ演算子
- 2.0.5. 細かいつまずいたことをメモしておく(10月編)
- 2.0.6. Progate Ruby on Rails5 VI ~ VII 個人的ざっくりまとめ
- 2.0.7. rails6 bootstrap5導入方法
- 2.0.8. 【コードリーディング】Rails 1.0 ActiveRecordのソースコードを読んでみた
- 2.0.9. 【RSpec】Railsチュートリアル第6版 第7章
- 2.0.10. 【RSpec】Railsチュートリアル第6版 第6章
【Rails】マイグレーションファイル関連のコマンドまとめ
##はじめに
マイグレーションファイル関連のコマンドのまとめです。##migrationを実行
“`
$ rails db:migrate
“`
##データベースを作成“`
$ rails db:create
“`
##データベースを削除“`
rails db:drop
“`##migrationの実行、データベース作成、削除をまとめて行う
“`
$ rails db:reset
“`##migrationを削除
削除する際にはまず、ステータスを確認。“`
$ rails db:migrate:status
“`
ステータスの部分がdownになっていれば削除。
upになっている場合、downにする。“`
$ rails db:rollback ・・・ 一つ前をdownにする
$ rails db:rollback STEP=○ ・・・ ○個前までdownする
$ rails db:migrate:down VERSION=20211101101010 ・・・ ファイルを指定してdownする
“`
最後の「2021110110
エラー文について①!
#①.結論!
Webアプリケーション開発中は、エラーが頻繁に起きます!
エラー解決を重ねていくことで、Railsの全体像や仕組みの理解が深まるといっても過言ではありません!
エラー解決のために必要な前提知識を理解して、様々なエラーについて学びたいと思います!
#②.No template for interactive request
今回のエラーは、投稿ボタンを押したらNo template for interactive requestというエラーが表示されるというものです!
タイトルを確認すると、「No template」となっています。これは、ビューファイルが見つからないというエラーです!
No templateのエラーが出ているため、「〇〇〇.html.erbのファイルがおかしいのでは?」という仮説がたてられます!
仮説をもとに、例として、app/views/〇〇/new.html.erbを確認すると、nwe.html.erbとなっており綴りが間違っていることが確認できます!
正しく、new.html.erbと修正して解決できます!
#③.まとめ
エラー
RailsのAPIをブラウザのコンソールから呼ぶ
### POST
“`js
await (await fetch(‘/example/api’, {
method: ‘POST’,
headers: {
‘Accept’: ‘application/json’,
‘Content-Type’: ‘application/json’,
‘X-CSRF-Token’: document.querySelector(“meta[name=’csrf-token’]”).getAttribute(‘content’)
},
body: JSON.stringify({
params1: ‘パラメータ1’,
params2: ‘パラメータ2’,
})
})).json()
“`### GET
“`js
await (await fetch(‘/example/api’)).json()
“`
Couldn’t find Schedule without an IDを解決する
rails初学者です。現在、オリジナルアプリを作成中で、削除機能をつけようとした時に、
Couldn’t find Schedule without an IDという「IDがありませんよ!」 というエラーが出ました。まず最初にbinding.pryで
“`ruby:schedules_controller
binding.pry
schedules = Schedule.find(params[:id])
schedules.destroy
“`
paramsの中身を確認したところ、
pramsにはidではなく、formatが代入されていました。そこで、routes.rbを確認すると
“`ruby:routes.rb
resources :posts do
resource :schedules, only: [:update, :edit, :destroy]
end
“`
とschedulesのresourceが単数系になっていて、このままではIDを付与してくれないので、resourcesの複数形に直し、“`ruby:index.htm
本番環境で写真投稿をすると500エラーが出る
##使用技術
Rails6.0.3
nginx
puma
AWS s3##発生した問題
本番環境で写真投稿をすると何故か500エラーが出てしまい、またnginxのログなどをみても何も表示されない。##やったこと
まず初めにaws s3のセッティングができていなかったのでそれをいろいろな記事をみて実装した。しかしそれでも写真を投稿することができず、同じエラーに見舞われた。##解決方法
いろいろ調べているうちにこの記事( https://fuen-works.hatenablog.jp/entry/2018/04/18/100154 ) に出会った。ここには/etc/nginx/nginx.confの所有者と/var/lib/nginxの所有者を一致させることで解決したと書いてあり、僕の場合、前者はec2-user、後者はrootになっていたので、それをこの記事をみながらコマンドで修正したところいきなり写真を投稿できるようになってしまった。##感想
まったく何がどのように動作して今回の問題が発生したのか全くわからずの解決だったがとりあえず写真がアップできて嬉しいです笑。デプ
【RubySilver対策】Ruby特化のクイズサービスを作りました。
#はじめに
ポートフォリオとしてRubyの問題を提供するクイズアプリ**『RubyMania』**をリリースしました。
資格勉強でなくてもご利用頂けるかと思います。https://www.rubymania.info
私自身プログラミング未経験ではございますが、学習を始めて5ヶ月くらいの頃にRubyを体系的に学んでみたいと思ったのがきっかけでRubySilverとRubyGoldを取得させて頂きました。
RubySilverとRubyGoldを取った時の話はまたどこかで記事に出来ればと思います!
当時資格を勉強していて感じた事としては、
①知ってるメソッドが一つ増えると読めるコードが増えるので勉強が楽しい
②初学者が資格取るとモチベーション上がってもっと頑張ろうって思える
③でも資格教本の問題やネットにある問題をやり尽くしてしまってこれ以上どうして良いか分からない
④しかも答えと問題を暗記してしまってこれ以上どうして良いか分からないそんな楽しさの共有と悩みを持つ方の一助となれたら嬉しいなと思ってこのサービスを作りました。
難易度としては
①Progateで
[Rails]has_oneやbelongs_toをリロード!削除されたときの挙動がreload_associationとreloadで違うので注意!
ActiveRecordのアソシエーションは1度取得するとキャッシュしてくれるため、2度目からはSQLが発行されません。
この機能はとても便利なのですが、たまに最新の情報にリロードしたいときがあります。例えば下記のようにuser.profile.addressが別で更新された場合です。
“`irb
irb(main):001:0> user = User.first# profileは初回アクセスなので、SQLが発行される
irb(main):003:0> user.profile.address
Profile Load (0.9ms) SELECT `profiles`.* FROM `profiles` WHERE `profiles`.`user_id` = 2 LIMIT 1
=> “住所だよ”# profileはキャッシュしているのでSQLは発行されない
irb(main):004:0> user.profile.address
=> “住所だよ”# 別プロセスでprofile.addressを更新
irb(main):005:0> Profile
Ruby on Railsのscaffoldを使ってみる
##はじめに
Ruby on Railsのscaffoldを使ってみました。
今までは勉強のために一つ一つ記述していたのですが、一度も使ってなかったのでお試しです。###scaffoldとは
調べてみると、今まで一つ一つ記述していたモデル、コントローラー、ビュー、ルーティングを自動的に作成してくれるみたいですね。
すごく手間が省かれますね。めっちゃ便利!!###使ってみた
まずはコマンドです。今回はモデル名は「Post」で作成します。“`
$ rails g scaffold Post カラム名 データ型
“`“`
invoke active_record
create db/migrate/20211031145458_create_posts.rb
create app/models/post.rb
invoke test_unit
create test/models/post_test.rb
create test/fixtures/
【422 Unprocessable Entity 】のバリデーションエラー、外部キー制約が原因でした。
コードを書いてテストを実行したら**「422 Unprocessable Entity」**というエラーが出ました。
ググってみたらバリデーションエラーみたいです。
そして、自分の場合は外部キー制約の書き方に問題がありました。### 環境
– Ruby 2.6.3
– Ruby on Rails 6.0.1#結果
:::note
modelの外部キー制約のチェックを任意にしてあげる。
:::#前提
利用者(User)が車を1台持っていたり**持っていなかったりする**状況でした。“`ruby
class User < ActiveRecord::Base has_one :car end class Car < ActiveRecord::Base belongs_to :user # ↑ここが違っていた。 end ``` この状況だとCarモデルに`user_id`がセットされていないとバリデーションエラーが発生します。 そのため、利用者が車を持っていない場合に422エラーが発生していました。 #解決 `optional: true`を追加して
【個人用rails tutorial -3
静的ページの生成
①コントローラー,モデル,アクションの削除方法
“`
$rails destroy 〜
“`②マイグレーションの変更を1つ前に戻す方法
“`
$ rails db:rollback
“`③最初に戻したい時
“`
$ rails db:migrate VERSION=0
“`
※マイグレーションは逐次的に実行され、マイグレーションに対してバージョン番号が付与される。上記の0を別の数字に置き換えることによって、指定したバージョンの状態に戻せる。テストスイート(Test Suite)
①なぜテストを行うのか
>1.機能停止に陥るような回帰バグ(Regression Bug: 以前のバグが再発したり機能の追加/変更に副作用が生じたりすること)を防止
>2.コードを安全にリファクタリング(機能を変更せずにコードを改善)できる。
>3.アプリケーションコードから見ればクライアントとして動作するので、アプリケーションの設計やシステムの他の部分とのインターフェイスを決めるときにも役に立つ。②テスト方法
>1.te
Rails+React+MySQL+nginx+puma on Docker
はじめまして。
初投稿です。
よろしくお願いします。# 概要
Docker# 自己紹介
初投稿なので軽く自己紹介します。
現在横浜の大学に通うB3で絶賛就活中です。Qiitaの方々の記事に大変お世話になっているのでぜひ自分も書いて誰かの役に立てればと思い書いてみました。
誰かのtipsになれば幸いです。承認欲求強めです。いいね、ストック、スター、フォローしてくれると飛び跳ねるくらい嬉しいです。
よろしくお願いします。# すぐはじめたい方へ
完成版
[github](https://github.com/nakanoi/react_rails_nginx_docker)
`clone`後`setup.sh`を実行すればコンテナが立ち上がります。# 構成
## バック
| | version |
|——————|———|
| Ruby | 2.6.2 |
| Rails(API モード) | 6.1.4 |
| nginx | 1.20.1
【個人開発】チーム開発にしてみたらメリットいっぱいな話
## 結論
個人開発の目的が
`楽しみたい` or `勉強のために`ならチーム開発するべき—
### ターゲット
– 1人で個人開発をしてる人
– 駆け出しエンジニア
– マネジメント力をつけたいと思っている人—
### 筆者経験2ヶ月かけて[個人開発アプリ](https://www.ideee.tech/)を作った
現在、計6人体制でチーム開発を行なって2ヶ月目!—
### 作ってるアプリ
アイデアとエンジニアのマッチングアプリ
https://qiita.com/naruqiita/items/f8773efc49651c457cb3
—
## これまでの背景
—
駆け出しエンジニアは増えている
`一番の鬼門である就職の難易度UP`
→ お金を払ってでも実務経験を得るサービスなんてのが出てきた。。?https://gimejob.com/
—
正直な感想?
`うわ〜、きち〜`です
—
#### ツイートからの募集
【RSpec】Railsチュートリアル第6版 第8章
#はじめに
Railsチュートリアル第6版のテストをRSpecで書き直していく。###目次
– [第3章](https://qiita.com/supyolo888/items/35081ead2cfafb40a995)
– [第4章](https://qiita.com/supyolo888/items/939b670b62eb18467f6d)
– [第5章](https://qiita.com/supyolo888/items/42234ac2ed3919b14586)
– [第6章](https://qiita.com/supyolo888/items/bd10e64c77fe391cf203)
– [第7章](https://qiita.com/supyolo888/items/d2824ced26402b5f58d1)
– 第8章(本記事)#事前準備
Gemfileにテストデータ作成用のFactory Botを追加“`rb:Gemfile
group :development, :test do
gem “factory_bot_rails”
end
“
【Ruby silver】範囲式 フリップフロップ演算子
次のコードを実行するとどうなりますか。
–“`
10.times{|d| print d == 3..d == 5 ? “T” : “F” }
“`解説文
—
d == 3..d == 5の部分は条件式に範囲式を記述しています。
この式は、フリップフロップ回路のように一時的に真偽を保持するような挙動をとります。
詳細は、Rubyリファレンスに詳しい説明がありますのでそちらを参照してください。https://docs.ruby-lang.org/ja/latest/class/Range.html 初めて見た時に混乱しました。
どうゆう順番で評価するか整理して考える必要があったのでまとめます。
**⑴Rangeの復習**
–
“`ruby
# ..の場合
a = (1..5).to_a
=> [1, 2, 3, 4, 5]# …の場合
a = (1…5).to_a
=> [1, 2, 3, 4]
“`
?
..の場合は5を含む1〜5の範囲になる。
…の場合は4.9999…までは対象になるが5は範囲に
細かいつまずいたことをメモしておく(10月編)
# はじめに
2021年10月も仕事や勉強でつまづいたことをまとめて自分用のメモとしてあげておきます。
調べればすぐわかる程度で私が記事にする必要はないなと思ったもです。今月は仕事の繁忙期を乗り切り(来月再来予定)、比較的落ち着いた1か月となりました。
しかし、Windows11が始まるなどのトラブルが起きており、それに関連した問題に対処しました。
# 問題
## 1. GoogleColabratoryでMeCab+Neologdを使いたい
https://qiita.com/jun40vn/items/78e33e29dce3d50c2df1
こちらの記事を参考にした。
インストールは以下のコマンド
“`
!apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab > /dev/null
!git clone –depth 1 https://github.com/neologd/mecab-ipadic-neologd.git > /
Progate Ruby on Rails5 VI ~ VII 個人的ざっくりまとめ
# emailの重複がないかチェック
バリデーションで`uniqueness: true`を指定
“`rb:models/user.rb
class User < ApplicationRecord validates :email, {uniqueness: true} end ``` # マイグレーションファイルのみ作成 データベースに変更を加えるが、モデルは必要ないとき `rails g migration ファイル名`をターミナルに入力 ```terminal:ターミナル $ rails g migration add_image_name_to_users ``` # マイグレーションファイルの仕組み テーブルの変更を加えるには、マイグレーションファイルのchangeメソッドの中に処理をかく ```rb:20170427053118_add_image_name_to_users.rb class AddImageNameToUsers < ActiveRecord::Migration[5.0] def change # 変更内容 e
rails6 bootstrap5導入方法
#はじめに
railsチュートリアルを進めるに当たってbootstrap3を導入することがあるのですが、2周目でローカル環境で進めていることもあり、bootstrap5を使用してみようと思い、導入できるようになるまでの備忘録です。
詳しいことは分かりませんが色々な記事を参照して自分にできそうな方法で導入しました。railsチュートリアル同様、gemを入れてsassにインポートするやり方です。
#筆者の環境
`Macbook Air(M1, 2020)`
`macOS Big Aur バージョン11.4``ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]`
`Rails 6.1.4.1`#①gemを入れる
bootstrap3では’gem bootstrap-sass’を入れていましたが、bootstrap5では2つ入れるそうです。“`ruby:Gemfile
gem ‘bootstrap’, ‘~> 5.1’
gem ‘jquery-rails’
“`#②cssファイルをscs
【コードリーディング】Rails 1.0 ActiveRecordのソースコードを読んでみた
#はじめに
Railsポートフォリオ作成でActiveRecordを使っており、作成当時は正直内部処理がどうなっているのか分かっていませんでし、気にもしていませんでした笑そういった中、実務案件で直接SQLを書く機会があり、ActiveRecordって実際どういう風にSQLに置換して実行しているのか気になりはじめました。
そこで、ActiveRecordのソースコードでSQLに置き換えている仕組みの部分のコードを読んで理解した部分を書き留めたいと思います。
#今回読んだソースコード
今回はコードの流れをシンプルに見たかったので最新のソースコードではなくRails v1.0.0のソースコードを読みました。とは言ってもコードは約1800行もあり、読むのになかなか骨が折れました笑その中でもController部分でよく使用するfindメソッドに絞って読んだものを記載します。
ソースコード元は[こちら](https://github.com/rails/rails/blob/v1.0.0/activerecord/lib/active_record/base.rb#L378)#そ
【RSpec】Railsチュートリアル第6版 第7章
#はじめに
Railsチュートリアル第6版のテストをRSpecで書き直していく。###目次
– [第3章](https://qiita.com/supyolo888/items/35081ead2cfafb40a995)
– [第4章](https://qiita.com/supyolo888/items/939b670b62eb18467f6d)
– [第5章](https://qiita.com/supyolo888/items/42234ac2ed3919b14586)
– [第6章](https://qiita.com/supyolo888/items/bd10e64c77fe391cf203)
– 第7章(本記事)#Minitest
###ユーザー登録に対するテスト
“`rb:test/integration/users_signup_test.rb
require ‘test_helper’class UsersSignupTest < ActionDispatch::IntegrationTest test "invalid signup info
【RSpec】Railsチュートリアル第6版 第6章
#はじめに
Railsチュートリアル第6版のテストをRSpecで書き直していく。###目次
– [第3章](https://qiita.com/supyolo888/items/35081ead2cfafb40a995)
– [第4章](https://qiita.com/supyolo888/items/939b670b62eb18467f6d)
– [第5章](https://qiita.com/supyolo888/items/42234ac2ed3919b14586)
– 第6章(本記事)
– [第7章](https://qiita.com/supyolo888/items/d2824ced26402b5f58d1)#Minitest
###Userテスト
“`rb:test/models/user_test.rb
require ‘test_helper’class UserTest < ActiveSupport::TestCase def setup @user = User.new(name: "Example User", email: