- 1. Rabbitを使ってみたメモ
- 2. 作業中ブランチで間違ってpullしてしまった場合の対応
- 3. 【Rails】ActionController::UrlGenerationError: No route matchesが発生する原因の1つ
- 4. 【Rails】ポリモーフィック関連先の項目で検索する方法
- 5. [Rails]JavaScript(jQuery)でサーっとページトップに戻るボタン(FontAwesome)
- 6. これから学習する言語についてまとめた
- 7. 【Rails】新規投稿時に複数のタグ付け機能を実装したい
- 8. with_optionsで共通のバリデーションをまとめよう!
- 9. Rubyから始めるGo ~ 文法 ~
- 10. 1ページに表示できる投稿件数を制限する[kaminari]
- 11. Couldn’t find Blog with ‘id’=show
- 12. [Rails]RspecにてKeyError: Factory not registered
- 13. RustとRubyの違い
- 14. ActiveModel::UnknownAttributeError: unknown attribute ‘password’ for StaffMember.
- 15. 【Ruby】行単位、列単位で合計値を求めるプログラムを作ってみた!
- 16. Tapyrus環境構築(dev)
- 17. Railsざっくりアプリケーション作成の流れ(MVC)
- 18. rails g modelをしたら「FATAL: Listen error…」が出たので、その時の対処法
- 19. Railsのenumを使ってみた
- 20. 自動デプロイでエラーが発生して、解決に至るまで(Capistrano)
Rabbitを使ってみたメモ
#? ? この記事は未完成です ? ?
Rabbitを使った発表をしたので、次回のときのためのメモ。
Rabbitはなかなか上達しないので、不完全な記事でもとりあえず投稿。Github リポジトリ
https://github.com/rabbit-shocker/rabbit
公式サイト
https://rabbit-shocker.org/
## スライドの生成
“`sh
rabbit-slide new \
–id theme-benchmark-ja \
–base-name theme-benchmark \
–markup-language rd \
–name “Kouhei Sutou” \
–email kou@cozmixng.org \
–rubygems-user kou \
–tags rabbit
“`ただし、GUIもついているので、単に `rabbit-slide` と打つだけでも大丈夫。
![image.png](https://qiita-image-store.s3.a
作業中ブランチで間違ってpullしてしまった場合の対応
## はじめに
ローカルで機能開発中に、最新のリモートブランチの動作確認をしようと、`git pull` をしました。
しかし、develop ブランチに切り替えるのを忘れており、作業中のブランチにpullしてしまったため、pullを取り消す方法についての備忘録です。
## 前提– branchAで作業中
– まだコミットしていないファイルがある状態でpullしてしまった## 対応方法
`git pull` は`git fetch` でリモートの最新状態のブランチを持ってきて、ローカルの現在いるブランチにマージするコマンドなので、pull してきたリモートブランチのマージを取り消しすればよいだけです。
つまりマージする前の位置にHEADを移動させればいいことになります。
### 1. HEADの移動履歴を確認まずは、現在のHEADの位置を確認しましょう。
“`zsh
% git reflog# 現在のHEADの位置
e6ec135b (HEAD -> feature/branchA) HEAD@{0}: pull origin HEAD: Merge made
【Rails】ActionController::UrlGenerationError: No route matchesが発生する原因の1つ
## 背景
Rspec初心者の自分がテストを書いていて「ActionController::UrlGenerationError: No route matches」というエラーに遭遇しました。これでちょっとハマってしまったので同じように悩む人がいたらと思いメモとしてまとめておきます。
## 原因
超初歩的なところで`params`にURLのパスパラメーターを設定していないのが原因でした。例えば`offices/:office_id/user/:user_id`のURLに設定したコントローラーアクション(show)をテストするためには以下のようにパスパラメーターを`params`に設定しないといけません。
“`
get :show, params: { office_id: 1, user_id: 1}
“`
【Rails】ポリモーフィック関連先の項目で検索する方法
# はじめに
ポリモーフィック関連先の項目の検索方法を時間をかけて調べたのですが、なかなか出てこなかったためまとめておこうかなと思います。
ポリモーフィック関連の作成方法などはやりません。
関連リンクを下記に載せておくので、必要であれば参考にしてください。。* Railsガイド – ポリモーフィック関連付け
* https://railsguides.jp/association_basics.html#%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91# 関連性
以下のような“`Animal“`モデル、“`Panda“`モデル、“`Cat“`モデルの構成を作成します。
“`ruby:animal.rb
class Animal < ApplicationRecord belongs_to :animalable, polymorphic: true end ``` `
[Rails]JavaScript(jQuery)でサーっとページトップに戻るボタン(FontAwesome)
ページトップ機能はいろんな実装方法があると思いますが、今回はJavaScript(jQuery)とFontAwesomeを使ったページトップへ戻るボタンの実装をしていきます。
スクロールが多いページだとページトップボタンは必須かなと考えます。
ただスマホの場合は指でスクロールが簡単にできるので、スマホのみのサービスの場合は必須とまではいかないかなと。(スマホではあまりページトップボタンクリックされてないみたいなデータがあったような、、、)
完成イメージはこちらです。(右下のボタン)
![スクリーンショット 2021-07-14 21.49.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1554142/bff44f26-6884-fb8d-e855-cc518ddb1669.png)
実際の動作を確認したい方は、ぼくの[ポートフォリオ](https://oogiri-legendroad.com/answers)を確認してみてください。
ある程度スクロールしたら右下に出てくるので、クリック
これから学習する言語についてまとめた
はじめに
—
これからプログラミングを学習するにあたって、学ぶ言語について以下にまとめました。
(間違いがありましたら、ご指摘を頂けますと幸いです)HTML
—言語の正式名称
ハイパーテキスト・マークアップ・ランゲージ(Hyper Text Markup Language)の略
ハイパーテキスト
文書・画像・図表・音声・動画などのリンクを貼ったり、埋め込むことができる仕組み
マークアップ
サイト内の文書に意味づけをしていく作業。
HTMLでは文書をタグで囲むことで意味をつけていくことで、
コンピューターが正しく認識できるようにする。
ランゲージ
言語開発された経緯
WEBページを作成するために開発された言語である主にどのように利用されているのか
ほとんどのWEBページにおける基本的な骨組みはHTMLで構成されているメモ
SEO「検索エンジン最適化(Search Engine Optimization)」を意識しタグを使うことで、
検索エンジンが、より正確に文書の中身を理解できるようになる。
CSS
—言語
【Rails】新規投稿時に複数のタグ付け機能を実装したい
# 概要
新規投稿(photo)に複数タグ(tags)を付けられるように実装していきます。
※タグは別途、ユーザーによる新規登録機能が実装済みとして考えます。# 解決方法
①中間テーブル(photo_tags)を生成して、各テーブルとのアソシエーションを記述する。
②複数のタグ選択時にプルダウンのデザインを良くするためにselect2を導入する。
③新規投稿時にタグが紐づくように、photosコントローラー内のパラメーターの記述を編集する。
④タグの複数選択ができるように、ビューファイルを編集する。※前提として、すでにusersテーブルとphotosテーブル、tagsテーブルの生成が完了しているとします。
それぞれのテーブルのカラムとアソシエションは下記の通りです。“`ruby:README
### users table
| Column | Type | Options |
| ———— | ————–| ———– |
| first_name | string
with_optionsで共通のバリデーションをまとめよう!
# with_options
「with_options 〇〇 」と書くことで、
複数の情報に対して共通したオプションを付けることが可能となる## 記述例
「nickname, last_name, first_name それぞれのカラムが空だと保存できない」というバリデーションを設定する場合class User < ApplicationRecord validates :nickname, presence: true validates :last_name, presence: true validates :first_name, presence: true end 上記のようにカラムひとつひとつに`presence: true`(カラムが空だと保存できない)というバリデーションを記述することになる **with_options使用した場合** class User < ApplicationRecord with_options presence: true do validate
Rubyから始めるGo ~ 文法 ~
# はじめに
Rubyを知っている状態で、Goを勉強してみました。
GoはGoogleが開発したプログラミング言語で実行速度が速いのが持ち味らしいです。
# バージョン
| Ruby | Go |
| :—- | :—– |
| 2.7.1 | 1.16.5 |# 基本形
“`go:main.go
package mainimport “fmt” // コンソールに出力する用のパッケージ
func main() {
// コンソールに出力
fmt.Println(“Hello World”)
}
“`# Rubyで解釈
## 変数定義(例:文字列型)
“`ruby:ruby
message = “Hello World”
“`“`go:go
// 通常系
var message string = “Hello World”
// 省略形 その1
var message = “Hello World 2”
// 省略形 その2
message := “Hello World 3”
“`### 論理値型
1ページに表示できる投稿件数を制限する[kaminari]
#はじめに
投稿一覧を作成している時投稿が何十件も増えたらスクロールが果てしなくなることに気がつきました。そこでペーネーション機能を知り、実装ができたので忘れないために記事にしました。
![スクリーンショット 2021-07-14 22.26.04(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/4f5dfc02-86cc-e41e-7f51-2f0689f059dc.png)
よく見かけるこちらを実装していきます。
#ペーネーション機能を使う理由
投稿一覧がトップページに表示されるサイトの場合、全ての投稿がトップページに表示されると読み込むまでに時間がかかりますし、かなり読みにくくなってしまいます。
また底が果てしなくなり、フッターまでたどり着くのに時間がかかります。そんなときにページネーションの機能を実装しておけば表示される項目が一定数を越えると自動的に次のページへ内容を移行してくれるのでものすごい便利になります。
[pikawaka引用](https://pi
Couldn’t find Blog with ‘id’=show
#エラーについて
paramの値が空か間違っているという意味です。
今回の場合は、投稿→showに遷移する際にこのエラーを検出しました。
#エラーの原因
pathにid指定されていなかったことが今回の原因でした。“`ruby:controller.rb
def create
@book = Book.new(book_params)
if @book.save
flash[:notice] = “Book was successfully created.”
redirect_to “/books/show”
else
@books = Book.all
render :index
end
end
“`
if文の中のredirect_toにidが指定されていないことが原因あると分かりました。
#解決方法https://railsdoc.com/page/redirect_to
redirect_toに関するドキュメントを参考にしながら以下のように書き替えました。
“`ruby:contr
[Rails]RspecにてKeyError: Factory not registered
##はじめに
Rspecにてテストコードを記述していたところ“`KeyError: Factory not registered“`というエラーが出ました。
悩んだ割にはさくっと解決できました。一応記事に残しておきます。##解決法
まず、私の場合、FactoryBotで定義していたのがこちらになります↓“`ruby
FactoryBot.define do
factory :progress do
progress_page {300}
comment {“◯◯と◯◯がよくわからなかったから次回詳しく教えて欲しい” }
association :students_textbook
end
end
“`こちら実際のターミナル上のエラー↓
![スクリーンショット 2021-07-13 19.15.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552346/eb1c8646-98f1-36f6-b8e3-96d
RustとRubyの違い
# RustとRubyの違い
—
# Mut
—
– Ruby: 変数は値変えられます“`ruby
hoge = 1
hoge = 2
p hoge# 結果: => 2
“`—
– Rust: 変数は値変更不可(`immutable`)“`rust
fn main() {
let hoge = 1;
hoge = 2;
println!(“Hoge {:}”, hoge);
}“`
—
– Rust: 変数の値変更したい場合、`mut`を付けないといけません
“`rust
fn main() {
let mut hoge = 1;
hoge = 2;println!(“Hoge {:}”, hoge);
}
“`
—# 型
—
– Ruby:
ActiveModel::UnknownAttributeError: unknown attribute ‘password’ for StaffMember.
bin/rails db:migrateコマンドを入力するとターミナルで以下のようなエラー文が。
“`
Creating staff_members….
rails aborted!
ActiveModel::UnknownAttributeError: unknown attribute ‘password’ for StaffMember.
“`StaffMemberのpasswordが存在しないよと仰ってます。
最初にmigrationファイルを疑ってかかるも、passwordに関する記述は間違っていませんでした。続いてモデルを見に行くことに。“`staff_member.rb
class StaffMember < ApplicationRecord include EmailHolder include PersonalNameHolder has_many :events, class_name:"StaffEvent", dependent: :destroy validates :start_date ,presence
【Ruby】行単位、列単位で合計値を求めるプログラムを作ってみた!
[アウトプットのネタに困ったらこれ!?](https://blog.jnito.com/entry/2019/05/03/121235)
上記の記事で出題してある、「行単位、列単位で合計値を求めるプログラム」の問題を解いてみました。「minitest」もしくは「Rspec」を用いた実装を求められているのかもしれませんが、一旦そこは後回しにすることにしました。| | col1 | col2 | col3 | col4 | sum
| :— | :— | :– | :—- | :—- | :—-
| row1 | 9 | 85 | 92 | 20 | 206
| row2 | 68 | 25 | 80 | 55 | 228
| row3 | 43 | 96 | 71 | 73 | 283
| row4 | 43 | 19 | 20 | 87 | 169
| row5 | 95 | 66 | 73 | 62 | 296
| sum | 258 | 291 | 336 | 297 | 1182[「Ruby力向上のための基礎トレーニング」をテストコード付きで
Tapyrus環境構築(dev)
# Tapyrus 環境構築(dev)
## Tapyrus とは
Bitcoinをベースによりビジネスユース向けにカスタマイズしたブロックチェーン。
詳しくはTapyrusチャンネル[^1], Github[^2]をご覧ください。
## 環境構築
今回は dev モード[^3]での環境構築を行います。
### 前準備
Tapyrus では genesis ブロックを生成する前に鍵を用意する必要があります。(とりあえず試したいだけの方は前準備をスキップして[こちら](https://github.com/chaintope/tapyrus-core/blob/master/doc/docker_image.md#dev-mode)を実行したら環境構築できるかと思います。
鍵の生成には [tapyrusrb](https://github.com/chaintope/tapyrusrb) を使用します。
#### 鍵の生成
キーペアを生成します。今回は拡張鍵[^4]を用意することにします。
tapyrusrb を使用しますので、 `gem ‘tapyrus’` が使
Railsざっくりアプリケーション作成の流れ(MVC)
# アプリ作成の流れ(MVC)
### 雛形作成
“`
$ rails new アプリ名$ rails _6.0.0_ new アプリ名
#railsのバージョン指定 指定しなければ、インストールされているrailsのバージョンが指定される$ rails new アプリ名 -d DB
#DBを指定したコマンド デフォルトはsqlite
“`### DB作成
`rails new`で新しくアプリケーション部分が作成されたので、次は、DBを作成する。“`:DB作成コマンド
$ rails db:create
#デフォルトでは、development(開発)にDBが作成される
$ rails db:create RAILS_ENV=production
#production(本番)にDBを作成したい場合はこのコマンド
“`## ルーティングの設定
ルーティングは、クライアントからのリクエストに対して、どう処理してやるのかの道標です。
app/config/routes.rbにルーティングを記載していきます。“`ruby: ルーティングの基本
Ra
rails g modelをしたら「FATAL: Listen error…」が出たので、その時の対処法
今回初投稿という事もあり、色々と不慣れで見にくいとは思いますが、暖かい目で見てください。
タイトル通り、今回rails g modelをした所「FATAL: Listen error: unable to monitor directories for changes.」というエラーが発生したため備忘録として残します。
#現在のrails環境のバージョン
Ruby on Rails バージョン: 6.1.4
vagrant 2.2.17“`ruby:エラーした時の状況
$ rails g model Hogehoge hoge:hoge hoge:hoge
“`
をした所“`ruby:エラー文
FATAL: Listen error: unable to monitor directories for changes.
Visit https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers for info on how to fix this.
“`
というのが発生し
Railsのenumを使ってみた
# はじめに
Railsを触っていてenumって何ってなった背景からこの記事を書いています。
間違っている点等あればご指摘いただけると助かります!# enumとは?
enumは[列挙型]と言われるもので[列挙型]とは何かというと、プログラミング言語やデータベース管理システムなどにおけるデータ型の一つとされています。また複数の異なる定数を一つの集合として定義するものでもあります。# どんな時にenumを使うべきか?
ここはあくまで個人的な見解なのですが状態が変化するようなものを判定させたい時などが一番使い道があるのかなと考えています。(例)どのようなものに使うか
– 頻繁に値が更新されるような物
– 外部から取得するようなデータなど上記のようなものに使うと状態が変更された時に判定しやすくなるので使い勝手が良いのかなと一個人として思います。
# 参考文献
https://qiita.com/ozackiee/items/17b91e26fad58e147f2e
自動デプロイでエラーが発生して、解決に至るまで(Capistrano)
## はじめに
オリジナルアプリケーションのサーバをAWSのEC2に変更後、自動デプロイを実行中にエラーが発生しました。
![エラー画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906683/de44f84f-aaef-f316-4454-f9f4226fc69f.png)
解決に至るまでの手順を備忘録として記録します。## 環境
– Mac OS Catalina 10.15.7
– Ruby 2.6.5
– Rails 6.0.0
– MySQL2 0.5.3## 結論
sassを使用しているのに、cssファイルが削除されていなかったので、cssファイルのrgbを読み込んだことによるエラーで、
“`ruby:room.css
.select {
box-shadow: 0 1px 0 rgb(0 0 0 / 7%) inset;
}
“`この1行を削除することにより解決しました!
## 解決に至るまでの手順
– とりあえず検索。QiitaやGoogleで「自動デプロイ エラー