- 0.1. 【2022年最新】Rails6にBootstrap5を導入する方法
- 0.2. {VScode} 「Implicit keys needs to be on a single line」と出た場合
- 0.3. カラム型の種類
- 0.4. GraphQL RubyのDataloaderを使ってみる
- 0.5. (愚痴)renderやredirect_toの後に書かれた後続処理がケアしないと実行されちゃうってセンス悪いと思う
- 0.6. rails db:migrateを実行すると、Warning: the running version of Bundlerと警告が出る
- 0.7. 【Rails】ツイートを作成順ではなく、いいねした順に表示したい
- 0.8. Codecov × SimpleCov × RSpec × CircleCI で README にカバレッジを表示させる
- 0.9. 管理者権限もどき
- 0.10. 【Rails】scopeメソッドとクラスメソッドでnilを返す時の挙動が違う
- 0.11. [rails]評価点ごと(星ごと)の一覧画面を実装
- 0.12. Stripe::InvalidRequestErrorの対処法
- 1. 症状
- 2. 解決方法
- 3. 参考
- 3.1. Ruby on Railsのバージョンダウンの仕方
- 3.2. ruby on rails バージョンを指定してアプリケーション作成
- 3.3. 【個人開発】全くのRails初心者が一人でwebサービスを作ってみた
- 3.4. 【Rails】rake db:seedでCSVからDBに移す際のNameError: uninitialized constantやActiveModel::UnknownAttributeError
- 3.5. 【個人開発】MySQLにCRUDできるノーコードアプリをRailsで作ってみた
- 3.6. 【Rails】mysql2のインストールができない場合の対処法【MySQL】
- 3.7. railsチュートリアル第十四章 [Follow]ボタン Ajax編
- 3.8. railsチュートリアル第十四章 [Follow]ボタン(基本編)
【2022年最新】Rails6にBootstrap5を導入する方法
※ 本記事はRails6でBootstrap5を導入したい方向けの記事です!
※ Rails5やBootstrap4など、バージョン違いのものを導入する場合とは手順が異なります!## 開発環境&前提条件
Ruby 3.0.2
Rails 6.1.4.4
導入したBootstrap 5.1.3
Rails6でrails newしてある状態## Bootstrap5のインストール
“`terminal:terminal
% yarn add bootstrap
“`
上記コマンドでBootstrapの最新バージョンがインストールされます!
バージョンを指定する場合?“`terminal:terminal
% yarn add bootstrap@バージョン番号
“`ドロップダウンなどのポップアップ要素をいい感じにしてくれるpopper.jsもインストールします!
“`terminal:terminal
% yarn add @popperjs/core
“`
## application.html.erbに追記
“`erb:app/v
{VScode} 「Implicit keys needs to be on a single line」と出た場合
VScodeでdatabase.ymlをいじっていると、下の「問題」となっているところに「Implicit keys needs to be on a single line」と出ました。
何やら問題が発生しているらしく、その対象の文が赤線で引かれています。(画像)
https://gyazo.com/e934bd8d247577458c145c7bf9b64fb1よくわからなかったので、この状態のままrails sコマンドでページを開こうとしました。すると、、
https://gyazo.com/b6efd3ee3abadd7aa9435a93c209e2a9何やらエラーが出て、ページが表示されません。
Please note that YAML must be consistently indented using spaces. Tabs are not allowed.
↑
Google先生に和訳してもらうと、「YAMLはスペースを使用して一貫してインデントする必要があることに注意してください。 タブは許可されていません。」とのこと。
非常に単純な問題でしたが、単純ゆ
カラム型の種類
| 型 | 意味 |
|:-:|:-:|
| string | 文字列(1〜255文字) |
| text | 長い文字列(1〜4294967296文字) |
| integer | 整数(4バイト) |
| bigint |整数(8バイト)
|float| 浮動小数|
|decimal |精度の高い小数|
|numeric |数値|
|datetime |日時|
|timestamp |タイムスタンプ|
|time |時間|
|date |日付|
|binary |バイナリデータ|
|boolean| 真偽値型|
GraphQL RubyのDataloaderを使ってみる
GraphQL Rubyを使っているときにSQLのN+1問題を解決するためにバッチロードを利用すると思います。
有名なgemとしては [GraphQL::Batch](https://github.com/Shopify/graphql-batch) や [BatchLoader](https://github.com/exAspArk/batch-loader)、 [Dataloader](https://github.com/sheerun/dataloader)などがあります。
個人的には使ったことがあるのは[Dataloader](https://github.com/sheerun/dataloader)なのですが、2018年から更新されていないようなのと、去年GraphQL Ruby自体にDataloaderが入ったので今回はこちらを触ってみました。## GraphQL::Dataloader の概要
ドキュメントはこちらです。
https://graphql-ruby.org/dataloader/overview.html
GraphQL::Dataload
(愚痴)renderやredirect_toの後に書かれた後続処理がケアしないと実行されちゃうってセンス悪いと思う
Slack通知とか非同期処理やページレンダリング後にやって良いことを書けるようにすることは必要だけど、その仕組みは使いたいときに使える仕組みのほうが良いと思う。
なぜならrenderやredirect_toを複数書いたり先に書くケースなんて早期リターンみたいなケースがデフォルトだから。
早期リターン時は後続処理をしてほしくないからその記載をしている。それにもかかわらず、非同期とかをできるようにするために、多数派の早期リターン的なことを実現するために`redirect_to and return`とかを書かなければいけない、手続き的にデフォルト以外の記法を求められるのはセンスが悪い。
それも呼び出されたコントローラーのpublicメソッドの中で(=切り出された関数で書いてはいけない)書かなければならないのは辛い。
Controller内のrenderやredirect_toなんて、raise並の優先度なんだから。非同期とかできるようにするなら、デフォルトではなく、メソッドの引数に特殊な引数設定するとか、そのメソッドだけインスタンス変数とかヘルパーの変数でtrueにするとか、特殊
rails db:migrateを実行すると、Warning: the running version of Bundlerと警告が出る
データベースを更新し、usersデータモデルを作成するために下記を実行したところ、、
“`
% rails db:migrateWarning: the running version of Bundler (2.2.32) is older than the version that created the lockfile (2.2.33). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.33`.
“`と警告が出る。
↓
“`
% gem install bundler:2.2.33Fetching bundler-2.2.33.gem
Successfully installed bundler-2.2.33
Parsing documentation for bundler-2.2.33
Installing ri documentation for bundler-2.2.33
Done inst
【Rails】ツイートを作成順ではなく、いいねした順に表示したい
# 概要
ツイート投稿機能とツイートへのいいね機能を持つアプリケーションを開発中、
いいねした順番にツイートを取得する方法について調べたのでメモ。## 環境
ruby 3.0.2
rails 6.1.4
mysql 8.0.26## やりたいこと
**ツイートの作成順**がデフォルトの時に、
**ツイートの作成順**ではなく**ユーザーがいいねした順**にツイートを取得したい。## 先に結論
reorderを使用し、中間テーブルのカラムを直接指定する“`ruby:users_controller.rb
# ユーザー詳細画面で表示したい場合
def show
@user = User.find(params[:id])
@favorites = @user.favorite_tweets.reorder(‘favorites.created_at DESC’)
end
“`以下、詳細
### 関連するモデル
“`ruby:user.rb
class User < ApplicationRecord has_many :tweet
Codecov × SimpleCov × RSpec × CircleCI で README にカバレッジを表示させる
# この記事を読むとできること
* GitHub の README に RSpec のカバレッジのバッジを表示させることができる
* バッジをクリックするとカバレッジの詳細やグラフを確認することができる# はじめに
GitHub のリポジトリを見ていると、テストのカバレッジ (全アプリケーションのコードに対するテストコードのカバー率) が表示されたバッジをよく見かける。あれを自分もやってみたいと思い設定をしてみたのだが、思っていた以上に躓くポイントが多かった。そのため、導入方法をここに残しておく。Codecov も SimpleCov も CircleCI もメジャーなツールではあるのだが、この 3 つを組み合わせた場合の導入方法を紹介している記事がほとんどなかった。この記事が、同じことを実現しようとしている人の役に立てば幸いである。
なお、この記事では、Git のホスティングサービスには GitHub、Ruby のテストツールには RSpec を使用することを想定している。ただ、基本は同じはずなので、異なる部分は適宜、読み替えること。
# Codecov
管理者権限もどき
# はじめに
今回は新規登録した時の情報を使って、***表示するかしないか***を判別していこうと思います。# 前提
この機能を実装するに当たって、***deviseを使用したマイページ機能***の実装はしてあるものとします。# 実装
これから実装していきます。
### deviseにカラムの追加
“`
rails g migration AddAdminToUsers admin:string
rails db:migrate
“`上記のコードを打ち込んで、adminカラムをstring型で追加します。
### parameterに記述します
“`app/controllers/application_controller.rb
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :admin#ここに追加])
devise_parameter_sanitizer.permit(:account_update, ke
【Rails】scopeメソッドとクラスメソッドでnilを返す時の挙動が違う
##クラスメソッドの場合
“`ruby
class Book
def self.published
where(published: true)
end
endBook.published.order(id: :desc)
#=> Attendance Load (3.8ms) SELECT `attendances`.* FROM `attendances` WHERE `attendances`.`date` BETWEEN ‘2022-01-01’ AND ‘2022-01-31′ ORDER BY `attendances`.`id` DESC
“`nilの場合はnilが返るのでメソッドチェーンが使えない。
“`ruby
class Book
def self.published
nil
end
endBook.published
#=> nilBook.published.order(id: :desc)
#=> NoMethodError: undefined method `order’ for nil:Ni
[rails]評価点ごと(星ごと)の一覧画面を実装
#はじめに
ポートフォリオ作成中に、評価された商品について、評価点ごとに商品を表示する機能を実装しようと試みました。
その際、ちょうどいい記事が見つからなかったので今回まとめてみました。##開発環境
ruby ‘3.0.0’
Rails 6.0.3.4#前提
下のような、評価をするためのモデル及びカラムが作成されており、投稿機能まで実装されているものとする。
ユーザが”ガジェット”を投稿するサイトにて、下のようなER図にてgadjet_pointを今回の評価点とする。
![gadjet_table.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1874224/38d39f7b-7d49-2a9a-dd5b-967e23771294.png)今回は、下画像のように10段階評価されたものについて、点数ごとの一覧画面を作成することを目標とする.
![スクリーンショット 2022-01-13 14.51.30.png](https://qiita-image-store.s3.ap-north
Stripe::InvalidRequestErrorの対処法
症状
RailsでStripeのCheckoutを組み込んだ際に、下記のエラーが表示されました。
翻訳すると、「(Checkoutを使用するには、アカウントまたは会社名をで設定する必要があります」でした。“`terminal:error
Stripe::InvalidRequestError (In order to use Checkout, you must set an account or business name at https://dashboard.stripe.com/account.):
“`解決方法
エラーメッセージに合った「https://dashboard.stripe.com/account. 」に飛んで、アカウント設定の項目を埋めたらエラーが表示されなくなりました。
参考
https://stripe.com/jp?utm_campaign=paid_brand-JP_ja_Search_Brand_Stripe-1608207349&utm_medium=cpc&utm_sour
Ruby on Railsのバージョンダウンの仕方
# rails6.1.4.4をインストールします。
最初にrailsのバージョンを指定してインストールを行います。
macは***`ターミナル`***
windowsは***`コマンドプロンプト`***
を開きます。そこに、以下のコードを入力していきます。
“`
gem install -v 6.1.4.4 rails
“`その後
“`
rails -v
“`
を行うと“`
Rails 7.0.0
“`と返ってくると思います。
# rails7.0.0をアンインストールします。
“`
rails -v
“`を入力をしますと、`Rails 7.0.0`と返ってくると思います。
そうしましたら、次にrailsをアンインストールしていきます。
“`
gem uninstall rails
“`を入力をすると以下のようなコードが返ってくると思います。
“`
1. rails-6.0.3.7
2. rails-6.1.4.4
3. rails-7.0.0
4. All versions
>#ここにrails-7.0.0の左にある
ruby on rails バージョンを指定してアプリケーション作成
# はじめに
***Mac***は`ターミナル`
***Windows***は`コマンドプロンプト`
を開きます。“`
rails new <アプリ名>
“`で新しいアプリを作成しようとすると、インストール済みの中で`最新のバージョン`が使用されます。
`rails 6.1.4.4`でアプリケーションを作成したい場合は、このコードではダメです。
実は、`rails 7.0.0`だとうまくいかないことがあります。
なので、***`rails 6.1.4.4`***のアプリケーション作成できるようにしたいと思います。“`
gem list rails
“`を記述すると
“`
dotenv-rails (2.7.6)
haml-rails (2.0.1)
importmap-rails (1.0.1)
jquery-rails (4.4.0)
rails (7.0.0)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.4.2)
sass-rails (6.0.0)
sassc-rails (2.1.2)
【個人開発】全くのRails初心者が一人でwebサービスを作ってみた
初投稿です。昨日で、一通り制作が完了したので、11月~1月前半までの二か月半を時期ごとに振り返ってみようと思います。
#開発環境
ruby on rails(6.1.4.4)
heroku
S3
cloudflare
#開発開始(11月前半)
掲示板的なそれぞれの人がそれぞれの目的でゆるーく使えるwebサービスを作ろうと思い、開発を開始しました。
開発言語はRailsが一番情報が多そうだと思い、Railsに決定。
どこから制作を初めていいかもわからない状況だったので、「rails webサービス 作り方」でググっていたところこのような記事を発見。https://zenn.dev/odentravel/books/e69a157daeecb3/viewer/5611c3
こちらの記事には大変お世話になりました。。。こちらを参考にしながら一通り作ってみようと思いました。
#bootstrapとHTMLとCSSに触れる(11月後半)
先程の記事を参考にしながら、順調に開発は進んでいました。
ですが、bootstrapの導入が上手くいかず、ここで1週間ほど苦戦。。。。
それもそのはず
【Rails】rake db:seedでCSVからDBに移す際のNameError: uninitialized constantやActiveModel::UnknownAttributeError
ポートフォリオにWebアプリを作っていますが、csvをデータベースに移す際にNameError: uninitialized constantで小一時間詰まりました。
CSVの内容をDBに移す記事はいくつかあるのですが、暗黙的に実行されたコマンドがあったり、Railsのデフォルトではない状態で実行されていたりしたので、ルーキーが読みやすいようにまとめました。###対象者
Railsについてざっと勉強した人
csvファイルを準備できている人
初めてRailsでCSVからDBにデータを移したい人###環境
Windows10
Ruby 2.6.9
Rails 5.2.6##CSVからDBに移す手順
###model作成
“`terminal:terminal
C:\Users\egacha_app> rails g model red_prob
“`red_probが今回csvの中身を入れるmodel名になります。
app/models/red_prob.rbが作成されます。
次にテーブルにカラムを追加するため、マイグレーションファイルを書き換えます。`
【個人開発】MySQLにCRUDできるノーコードアプリをRailsで作ってみた
個人開発で作ったサービス【[shareCRUD](https://sharecrud.com “shareCRUD”)】を先日ベータ版にて公開しました。この記事は、個人開発でサービス作ってる・作りたいけど、事例を参考にしたい人向けに、開発したサービスのご紹介と、それを作るまでの経緯をまとめてみました。
# 作ったサービス【shareCRUD】
![sharecrud_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172629/5ba8bf08-b9a8-f498-e65b-e259f8cdd492.gif)
**サイトはこちらです**→[https://sharecrud.com](https://sharecrud.com “shareCRUD”)
アプリ化したいDB(MySQL)につなげて、必要な設定をすると、ブラウザからGUIでCRUD(登録・検索・更新・削除)できる機能が作れます。イメージとしては、phpMyAdminみたいな機能をノーコードで作れるサービスです。
## ど
【Rails】mysql2のインストールができない場合の対処法【MySQL】
## はじめに
本記事は、プログラミング初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。##mysql2のインストールができない場合の対処法
###環境
OS: MacOS Big Sur 11.6.1(M1 mac)
Ruby: 2.7.5
Rails: 5.2.6
MySQL: 5.7(8.0でも確認しました。)###状況
データベースをMySQLに指定した上で`rails new`をした後に`bundle install`をしても以下のような文章が出力され、インストールできませんでした。
また、インストールができても`rails s`をした際に`Load Error`が出てしまう状況でした。“`
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lzstd
clang: error:
railsチュートリアル第十四章 [Follow]ボタン Ajax編
###[Follow]ボタン Ajax編
####Ajaxを使ったフォローフォーム
app/views/users/_follow.html.erb“`html
<%= form_with(model: current_user.active_relationships.build, remote: true) do |f| %><%= hidden_field_tag :followed_id, @user.id %><%= f.submit "Follow", class: "btn btn-primary" %>
<% end %>
“`###Ajaxを使ったフォロー解除フォーム
app/views/users/_unfollow.html.erb“`html
<%= form_with(model: current_user.active_relationships.find_by(followed_id: @user.id), html: { method: :delete }, remote: tr
railsチュートリアル第十四章 [Follow]ボタン(基本編)
###[Follow]ボタン(基本編)
Follow]/[Unfollow]ボタンを動作させましょう
そのために
Relationshipsコントローラが必要です。いつものようにコントローラを生成しましょう。“`rb
ubuntu:~/environment/sample_app (following-users) $ rails generate controller Relationships
Running via Spring preloader in process 4782
create app/controllers/relationships_controller.rb
# コントローラ
invoke erb
create app/views/relationships
invoke test_unit
create test/controllers/relationships_controller_test.rb
# テスト
invoke helper
cre