- 1. active-adminで管理者の新規登録をできなくする
- 2. Rails hidden_field について調べる(確認画面を作成して挙動確認)
- 3. RailsのCurrentAttributesを使ってX-Request-IDでnginx(Webサーバ)とunicorn(アプリサーバ)のログを追えるようにする方法
- 4. dockerコンテナに、Could not find hoge in any of the sources Run `bundle install` to install missing gems.が出た場合の対処
- 5. [Rails&Docker&MySQLの環境構築] Could not find gem ‘mysql2 (>= 0.4.4, < 0.6.0)’ in any of the gem sources listed in your Gemfile.とエラーメッセージが出てきた。
- 6. 【Rails】楽天APIを用いた検索機能にvalidationを設定(楽天APIの実装から~)
- 7. Ruby on Rails でnewコマンドにてアプリを作成するとbundler: failed to load command: spring (/Users/ユーザー名/アプリを作成するディレクトリ名/アプリ名/vendor/bundle/ruby/2.6.0/bin/spring)と出た話
- 8. FactoryBot、外部キーバリデーションで弾かれたときの解決方法
- 9. Railsチュートリアル 14章 FactoryBotでRelationshipのテストデータの作成
- 10. 【Ruby】便利なやつだよ〜before_action編〜
- 11. ファイル生成を抑えた最低限のRails
- 12. クッキーとセッションの仕組み
- 13. hidden_field_tagの使い方
- 14. form_withのlocalとflashメッセージ
- 15. resources & resource
- 16. Rails チュートリアル 第8章 備忘録
- 17. scopeの中にjoins等は書いて構わないと思う
- 18. RailsチュートリアルでRuby3.0.0をインストールしたらbundle updateとbundle installができなかったときの解決法
- 19. FactoryBotでの外部参照キーの記述方法
- 20. [Rails] WindowsのWSL2(Ubuntu、VSCode)にRailsをローカルインストールしてgitコマンドでgithub(master)にpushする
active-adminで管理者の新規登録をできなくする
ブログはこちらです.
最近[active-admin](https://github.com/activeadmin/activeadmin)を使って管理画面を作ったりしてました.
ログイン画面を開くと管理者として新規登録ができてしまってとんでもないことになっていたので,できないようにする方法をメモっておきます.
## 管理者の新規登録をできなくする方法
active-adminではdeviseが使われていて,deviseの設定によってログイン画面の機能も変わってくるようです.deviseの設定はmodelに書かれていますのでこれを変更します.
おそらく最初はこんな感じです.
“`
class AdminUser < ApplicationRecord devise :database_authenticatable, :re
Rails hidden_field について調べる(確認画面を作成して挙動確認)
こちらもなんとなくで意味を理解している、具体的な使い方のイメージができていない
の理由からしらべて記事を書くことにしました##「hidden_field」とは
form_forやform_withの中で使用する
目に見えない値を送るイメージどうやら、「hidden_field_tag」ヘルパーもあるみたいだが
これらの違いはまた別の日に記事にする##とりあえず、手を動かして使ってみる、準備編
ユーザーが投稿する画面を作って
投稿するまえに**投稿の内容の確認画面**を作成してみるUserとPostのそれぞれのコントローラーとモデルを
作成してみる“`
~/environment/rails/sample_app
❯ rails g controller users~/environment/rails/sample_app
❯ rails g model User~/environment/rails/sample_app
❯ rails g controller posts index new create~/environment/rails/s
RailsのCurrentAttributesを使ってX-Request-IDでnginx(Webサーバ)とunicorn(アプリサーバ)のログを追えるようにする方法
# 動作確認したRailsのバージョン
6.0.3.4# よくある話として
NginxなどのWebサーバのログとunicornやpumaなどのアプリサーバのログを同じIDで検索するため、X-Request-IDをアプリサーバのログに仕込んだりします。Railsに予め用意されているconfigの設定で行うのが手軽ですが、下記のような問題があります。# TaggedLoggingの問題
TaggedLoggingを利用していれば、configファイルの以下の設定のコメントアウトを外せばX-Request-IDがログに付与されるようになっています。
`config.log_tags = [ :request_id ]`X-Request-IDが123456789だとした時、↓のようなログになります。
“`console
[2020-11-XXT09:37:34+09:00] [123456789] some message
“`しかし、TaggedLoggingは例えば下記のような処理がある時、backtraceをログに出力してくれません。
“`ruby
d
dockerコンテナに、Could not find hoge in any of the sources Run `bundle install` to install missing gems.が出た場合の対処
bundle installをするたびに、dockeのrailsコンテナを再起動して見る
↓
それでもうまくいかない場合、“`docker:docker
docker-compose build –no-cache
“`以下を実行します。
参考
## 最後に
僕のdockerfileが悪いのかもしれません。それとも、bundle installするたびにrails sする必要があるのかもしれません。
[Rails&Docker&MySQLの環境構築] Could not find gem ‘mysql2 (>= 0.4.4, < 0.6.0)’ in any of the gem sources listed in your Gemfile.とエラーメッセージが出てきた。
#概要
初投稿です。[こちらの動画](https://www.youtube.com/watch?v=Fq1PH0Gwi8I&t=1161s)を見ながら環境構築をしていた最中に
“`docker-compose build“`後
“`docker-compose up“` を実行したら“`Could not find gem ‘mysql2 (>= 0.4.4, < 0.6.0)’ in any of the gem sources listed in your Gemfile.``` というエラーが出た。 #開発環境 macOS catalina バージョン10.15.7 #試したこと とりあえずググって * myslqの再インストール + ruby2.5.8から2.6.6へのアップデート + docker desktopの再設定 その他諸々のことを試したが色々試したが事象変わらず。 4時間経過。 朝日が登ってきて泣きそうになる。 #解決方法 ```docker-compose run web bundle install``` ```docker
【Rails】楽天APIを用いた検索機能にvalidationを設定(楽天APIの実装から~)
###実装内容
楽天APIを用いて検索機能を実装すると、検索フォームが空白 or 1文字で検索すると**keyword is not valid**とエラーが出ます。
コントローラーの該当アクション内で文字数をカウントして条件分岐したり、入力フォームをJavascriptで制御すれば手っ取り早いですが、それでは文字数にしか制限をかけられません。
通常のmodelのようにvalidationを設定する処理を記事にしました。###楽天商品検索APIについて
[楽天商品検索API]
(http://webservice.rakuten.co.jp/api/ichibaitemsearch/)###楽天APIを使用した検索機能の実装
[筆者が参考にした記事を参考にしてみてください(他人任せですいません…)]
(https://freesworder.net/rakuten-api-rails/)
上記の記事の内容は、新しくアプリを作るところからになっていますが、皆さんの状況に合わせて参考にしてください。
筆者は既存のアプリの既存のコントローラー(searchs_controller
Ruby on Rails でnewコマンドにてアプリを作成するとbundler: failed to load command: spring (/Users/ユーザー名/アプリを作成するディレクトリ名/アプリ名/vendor/bundle/ruby/2.6.0/bin/spring)と出た話
こんばんは。Miyayanと申します。今回初めてQiitaにて記事をあげます。
ゆえに拙い部分もあるかと存じますが、どうぞよろしくお願いいたします。# 目次
– 環境
– 参考記事
– 概要
– 仮説
– 試したこと
– 解決方法
– まとめ# 環境
**OS** : macOS Big Sur ver.11.1
**Ruby** : 2.6.5p114
**Rails** : 6.0.0
**bundler** : 2.1.4, default: 1.17.2
**gem** : 3.0.3# 参考記事
・[【Rails6】rails new で bundler: failed to load command: spring が出た。問題はbundler2.1.4かRuby2.7にあるようだが…..](https://qiita.com/chabudai/items/4051c21ca9161a301bfb#%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F%E3%82%A8%E3%83%A9%E3%83%BC)
・[bundler
FactoryBot、外部キーバリデーションで弾かれたときの解決方法
#はじめに
以前から、FaxtoryBotを使って、Rspecのテストがエラーでなかなか進めませんでした。今回、解決出来たので紹介します。↓以前の投稿
[FactoryBotで外部キーの値はどうやって作り出すんだ〜(泣](https://qiita.com/TerToEer_sho/items/02348a0fd017b1ea81bc)##設計
userテーブルはroomテーブルとアソシエーションしていて、ユーザー登録をする際に、room_idを入力する必要があるような状況です。
##ユーザー登録のテストコード一部
“`ruby:user_spec.rb
RSpec.describe User, type: :model do
describe ‘ユーザー登録’ do
before do
@user = FactoryBot.build(:user)
end
it ‘全ての項目が入力されていれば、登録できること’ do
expect(@user).to be_valid
end
end
end
“`
Railsチュートリアル 14章 FactoryBotでRelationshipのテストデータの作成
#はじめに
Railsチュートリアルをrspecに対応させながら取り組んでいたところ、14.2.3のリスト14.28のユーザのRelationshipテストデータをFactoryBotで作ろうとしたときにハマってしまったので、備忘録として投稿します。#環境
– ruby 2.7.2
– rails 6.0.3
– factory_bot_rails 6.1.0
– rspec-rails 4.0.1#やりたいこと
①下記ようにrelationshipのテストデータを作成するfixtureをFactoryBotで定義する。
②userのテストデータも同時にFactoryBotの定義内で作成する。“`ruby:test/fixtures/relationships.yml(リスト14.28)
one:
follower: michael
followed: lanatwo:
follower: michael
followed: malorythree:
follower: lana
followed: michaelfour:
fol
【Ruby】便利なやつだよ〜before_action編〜
コントローラー内の記述でかぶっているものについてまとめてくれる、そんな素晴らしいコマンド「before_action」編です。
“`
class ItemsController < ApplicationController def index @items = Item.order('created_at DESC') end def new @item = Item.new end def create @item = Item.new(item_params) if @item.save redirect_to root_path else render :new end end def show @item = Item.find(params[:id]) end def edit @item = Item.find(params[:id]) redirect_to root_path unless current_user.id
ファイル生成を抑えた最低限のRails
#はじめに
新しくRailsでアプリを作ろうとした際に、余計なファイルが生成されてしまうのが気になったので、今回は自分に必要な最低限のファイル生成でrails newをする方法、設定を書きます。
#Rails newのオプション
rails newにオプションをつけることで、指定した関連のファイルを生成しないでアプリを作ってくれます。
以下によく使いそうなオプションをいくつか上げていきます。中にはファイル生成以外の物も含まれています。## 使用データベースの指定
“`
rails new sample_app –database=mysql
“`–database=(任意のDB)で最初から指定したDBでアプリを作ってくれます。指定しない場合はsqliteになるはずです。勿論DBは後から変更することはできますが、少々面倒なので使用DBが決まっている場合は先に指定してしまいましょう。
## minitestの除外
“`
rails new sample_app –skip-test
“`rails標準搭載のminitestを生成しなくなります。Rspe
クッキーとセッションの仕組み
## 概要
クッキーとセッションについて学習したので自分用メモとしてアウトプットしていきます。## はじめに
ショッピングサイトで**ログイン情報を入力しなくてもログイン**できたり、**(自分が削除しない限り)カートに入れた商品がしばらくカートに入ったまま**になったりしますよね。これは、**セッション**と**クッキー**の仕組みがあるため実現できています。
## セッション(session)
– Webサービスに情報を一時的に保持してくれる仕組み
– アクセスの開始から終了までの一連の通信
– Railsでは`session`というオブジェクトにハッシュのような形で格納される[こちらの記事がイメージしやすく参考になりました!](https://wa3.i-3-i.info/word1791.html)
## クッキー(cookie)– **ブラウザが持っている**データを保存できる領域
– セッション情報(ID)を保存する場所
– 有効期限がある[こちらの記事がイメージしやすく参考になりました!](https://wa3.i-3-i.info/word172
hidden_field_tagの使い方
## はじめに
Railsアプリ作成時に`hidden_field_tag`を使ったので、その時の内容のメモ書きになります。
検索機能を使った時にパラメータが飛ばなかったので`hidden_field_tag`を使用し対応した時の内容になります^^## 使用方法
`hidden_field`と`hidden_field_tag`は用途は似ているが使い方が違う。
`hidden_field`は`form_for`や`form_with`の中で使用するに対し、`hidden_field_tag`は一つだけで使用でき`単体でパラメーターを渡したいとき`に使用する。
`form_for`内でも使用はできます。## 作業内容
このように検索窓のソースがあります。“`:app/views/texts/index.html.erb
<%= search_form_for @eq do |f| %><%= f.searform_withのlocalとflashメッセージ
# ちょっと困ったこと
Railsでよくあるflashメッセージを出そうと頑張っていたが、flash.nowだけ出せない。。。例えば、以下のようにSessionControllerで、ユーザログインを行うようなコードを書く。
“`
def create
@user = User.find_by(login_id: params[:session][:login_id])
if @user && @user.authenticate(params[:session][:password])
log_in(@user)
redirect_to @user, success: ‘ログインしました’
else
flash.now[:danger] = ‘ログインに失敗しました。’
render :new
end
end
“`ログイン成功したとき、すなわち、redirect_toした後の「ログインしました」は出るんだけど、ログイン失敗した時、すなわち「ログインに失敗しました」が全く表示されないとい
resources & resource
#resources
Ruby on Railsでルーティングを行う際に必ずと行っていいほど頻出である`resources`。
`resources`はモデルに対してアプリケーションにおける基本メソッド7つを自動的にルーティングしてくれます。例えば`User`モデルに対して`resources`を使ってルーティングを記載した場合
“`ruby:config/routes.rb
Rails.application.routes.draw do
resources :users
end
“`
`$ rails routes`でルーティングを表示させると以下のようになります。“`console
$ rails routes
Prefix Verb URI Pattern Controller#Action
users GET /users(.:format) users#indexRails チュートリアル 第8章 備忘録
第8章の備忘録です。
##環境
Rails 6.0.3
Ruby 2.6.3##目次
[1 セッションとcookies](#1-セッションとcookies)
[2 フラッシュメッセージ表示](#2-フラッシュメッセージ表示)
[3 ヘルパーメソッドを作成して利用するまでの流れ](#3-ヘルパーメソッドを作成して利用するまでの流れ)
[4 jqueryとbootstrapの導入方法](#4-jqueryとbootstrapの導入方法)
[5 signupした後に再度ログインさせない](#5-signupした後に再度ログインさせない)##1 セッションとcookies
日頃通信する時に利用されている**HTTP**は**ステートレスなプロトコル**である。
そのステートレスとは、
ブラウザ側が、〇〇のページを表示してください(リクエスト)→サーバー側が、〇〇のページです!(レスポンス)のやりとりをトランザクションというのだが、一度そのやりとりを終えるとすっかり忘れてしまうのである。つまり、会員サイトでログインした後に、この商品の購入ページを表示してくださいとリクエストを送
scopeの中にjoins等は書いて構わないと思う
主観もりもりです。賛否両論あると思いますが、いろんな意見もらえると嬉しいです。
## 背景
こんなコードを見かけた。“`rb
class Hoge
scope :with_active_fuga, -> { merge(Fuga.active) }
“`
これだとscope単体で動かない。joins(:fuga)等を付けてあげないといけない。
でも、このjoins(:fuga)等は,* `joins(:fuga).with_active_fuga`のように処理の中に付ける方がいいの?
* それともscope外の呼び出し元にjoins(:fuga)等を付ける方がいいの?と疑問に思ったので立ち止まって考えるに至った。
## scopeに書いて構わないと判断した理由
* joins等を外出しすると使う人にjoinの種類を委ねるからパフォーマンスや動作的にscope設計者の意図しない使われ方をされるリスクがある。
* joins等を外出し前提で作ると、単純に動かないコードをそのまま残すことになってまずい。
* `joins(:fuga).joins(:fuga)`のよRailsチュートリアルでRuby3.0.0をインストールしたらbundle updateとbundle installができなかったときの解決法
##あいさつ
知っている人はこんにちは!知らない人ははじめまして!
独学でプログラミングを極める変態中学生のAtieです!
今回は約3日間格闘し続けたエラーの解決法がわかったのでここに記録を残します
これでやっとRailsチュートリアルを進めることができます###結論から言うと…
**Rubyの最新版(3.0.0)をインストールしてしまって依存関係が解決できずに動かなかった!**
ということのせいで動きませんでした
なのでRailsチュートリアルと同じバージョンのRuby2.6.3をインストールしてGlobalに2.6.3を設定することで動きました!
##開発環境
Ruby 3.0.0
Rails 6.0.3.4
Gemfile.lock は削除済み
Gemfileの内容(名前は「Gemfile」ですがRubyのコードで記載されていてわかりやすいようにわざと.rbの拡張子をつけています本番環境では.rbはついていません以下Gemfileを表示するときは.rbを拡張子としてつけています)“`Gemfile.rb
source ‘https://rubygems.org’
gFactoryBotでの外部参照キーの記述方法
# はじめに
Railsでテストコードを記述していたところ、必要事項を全て埋めても、外部参照したカラムの記述に関するエラーが出たので、FactoryBotでの外部参照キーの記述方法についてまとめました。# 前提条件
下記のER図のようなUserモデルとArticleモデルにおいて、Articleモデルのuser_idが外部参照している場合を考えます。また、下記のようにUserのFactoryBotは定義済みとします。
![ER.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/829213/9df245a2-4865-1657-2791-8957c3bc44cc.png)“`ruby:user.rb
# UserのFactoryBot
FactoryBot.define do
factory :user do
nickname {Faker::Name.name}
email {Faker::Internet.ema[Rails] WindowsのWSL2(Ubuntu、VSCode)にRailsをローカルインストールしてgitコマンドでgithub(master)にpushする
## 背景
WindowsのWSL2上でRails2.7.2を動かし、ブラウザでRailsが動いていることを確認し、コンソールからgitコマンドでgithubのmasterブランチにコードをpushするまでの手順です。WSLを使った理由は、MACでの環境構築方法と近いからです。
また、gitでのブランチの切り分けとプルリク方法、Railsのフォルダ構成を最後に載せています。## WSL 2(Windows Subsystem for Linux 2)をVSCodeから使えるようにする
① コントロールパネルから「プログラム」>「プログラムと機能」>「Windows の機能の有効化または無効化」を選択する。
表示されたチェックボックスにて「Linux 用 Windows サブシステム」「仮想マシンプラットフォーム」の二つにチェックを付ける。その後再起動を要求されるので再起動する。② Windows storeからubuntuをインストールする。
③ 下記コマンドでWSLのバージョンを確認する。
“`
$ wsl -l -v
NAME STATE関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた