- 0.0.1. ArgumentErrorのエラーについて
- 0.0.2. 【個人開発】Web上でチームで同時に操作できる、手動統合テスト記録ツール「Itamaster」を開発しました!
- 0.0.3. 画像投稿機能を追加するgem「CarrierWave」ruby on rails 写真アップロード機能
- 0.0.4. railsチュートリアル第3章 埋め込みruby
- 0.0.5. ActionView::MissingTemplateが出たときの対処法。
- 0.0.6. Ruby・Railsで作ったポートフォリオをPHP・Laravelでリメイクしてみた
- 0.0.7. Railsチュートリアル[6版]8章|現在ログイン中のユーザーを返す処理について
- 0.0.8. jQuery導入
- 0.0.9. Rails チュートリアル11章で「rails s」が起動しない
- 1. 問題点
- 2. deviseって何?
- 3. 導入方法
ArgumentErrorのエラーについて
#結論。
#### 引数が間違ってる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1789450/7f3d6dff-28de-2a7b-992c-9b47dec78547.png)“`
wrong number of arguments (given 0, expected 1)
“`
given ⇒ 実際コードに書かれてる引数の数
expected ⇒ 本来あるべき引数の数経緯は忘れました。
【個人開発】Web上でチームで同時に操作できる、手動統合テスト記録ツール「Itamaster」を開発しました!
![itamaster_twitter_icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889393/560cbb90-55a3-f88a-2fe3-a0ddc9249acb.png)
現在システムはベータ版です。
アクセス時、利用できない機能、未実装の機能が存在することがあります。
DBはベータテスト終了時に初期化予定ですので、重要なデータは入力をお控えください。
機能の追加、バグの修正、ベータ版の終了や、アルファ版リリースについてはtwitterで発信致します。
↓
Tweets by Itamaster_# サイトの概要
**Itamaster**は、Web上で統合テストを設計、管理し、直感的な操作で実行が可能なサービスです。テストには前提条件、手順、期待する結果を複数登録でき、実行ログは全てサーバーに保存されます。
チームには他のユーザーを招待し、複数人で同時にテストの管理、実行が可能です。また、システムはテスト結果を複数の選択肢からテンプレートを選択し
画像投稿機能を追加するgem「CarrierWave」ruby on rails 写真アップロード機能
ここでは画像投稿機能を追加する方法について書いています。
Twitter風やInstagram風など、テキストだけではなく画像なども投稿する機能が欲しい場合は「**CarrierWave**」というgemを追加します。**環境**
>Windows10
>VS code
>ruby 2.7
>Rails 6.1.4**二つのgemを導入する**
ひな形の準備:scaffold
画像投稿機能:CarrierWave#まずはscaffoldというgemでモデルやコントローラー、ビューを一括で作成
railsではモデルやビューやコントローラなどを作る必要があります。
いちから作っていると面倒なので「scaffold」というgemを使います。
railsアプリケーションの開発をする際には、モデルやコントローラー、ビュー、ルーティングを作成していく必要があります。##modelsやviews、controllersの確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/98783
railsチュートリアル第3章 埋め込みruby
##少しだけ動的なページ
今度はそれをほんの少しだけ動的にしてみましょう。
ページの内容に応じて、ページのタイトルを自ら書き換えて表示するようにします
ここでの目標は、Homeページ、Helpページ、Aboutページをそれぞれ編集し、最終的にページごとに異なるタイトルを表示することです
ビューのタグの内容を変更
本節の終わりまでに、3つの静的ページのタイトルを「<ページ名> | Ruby on Rails Tutorial Sample App」という形式に変更します
レイアウトファイルを活用する。
ブラウザウィンドウの上部にウィンドウタイトルを変えるらしい。一時的にファイル名を変更
“`
mv app/views/layouts/application.html.erb layout_file
“`###タイトルをテストする(Red)
“`rb
require ‘test_helper’class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should g
ActionView::MissingTemplateが出たときの対処法。
#結論。
###部分テンプレートの参照先が間違っている。
私自身作成したコードで例を挙げるとすると、下記のような修正をしました。“`erb
誤:<%= render 'favorites/favorite-btn', post_image: @post_image %>正:<%= render 'public/favorites/favorite-btn', post_image: @post_image %>
“`#解決した経緯(上で分かったら見なくていい)
ポートフォリオ作成中、いいね機能の非同期通信実装時にこんなエラーが出てきました。![qiita01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1789450/88a368aa-872b-e042-23f7-dfdae62a1e7a.jpeg)
(前にアップしたのはポートフォリオ情報が入ってたので消しました。)####ActionView::MissingTemplate in ???????
なにこれ。
色々調べた結果
Ruby・Railsで作ったポートフォリオをPHP・Laravelでリメイクしてみた
# 目次
| 番号 | 項目 |
|:-:|:–|
| 1 | [はじめに](https://qiita.com/drafts#1%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB) |
| 2 | [URL](https://qiita.com/drafts#2url) |
| 3 | [2つの言語を学習した理由](https://qiita.com/drafts#32%E3%81%A4%E3%81%AE%E8%A8%80%E8%AA%9E%E3%82%92%E5%AD%A6%E7%BF%92%E3%81%97%E3%81%9F%E7%90%86%E7%94%B1) |
| 4 | [工事現場情報サイト(PHP、Laravelで作成)](https://qiita.com/drafts#4%E5%B7%A5%E4%BA%8B%E7%8F%BE%E5%A0%B4%E6%83%85%E5%A0%B1%E3%82%B5%E3%82%A4%E3%83%88phplaravel%E3%81%A7%E4%BD%9C%E6%88%90) |
| 5 | [Construc
Railsチュートリアル[6版]8章|現在ログイン中のユーザーを返す処理について
Railsチュートリアルの8章のリスト1-6に出てきたログイン中のユーザーを返す処理について、特にコードを省略してる部分がわかりにくかったので自分用にまとめます。
“`ruby
module SessionsHelper
#渡されたユーザーでログインする
def log_in(user)
session[:user_id] = user.id
end#現在ログイン中のユーザーを返す(いる場合)
def current_user
if session[:user_id]
@current_user ||= User.find_by(id:user_id)
end
end
end
“`##ログイン中のユーザーを返す処理
まず、log_in(user)メソッド内の**session[:user_id]**という表現に戸惑いますが、sessionはRailsで事前に定義されているメソッドです。session[:user_id] = user.idを実行するとユーザー
jQuery導入
今回は、JavaScriptのjQuerykの導入のみの記事です!
ネットで調べても中々うまくできなかったので、、、※jQueryの導入には、jquery-railsというGemを利用することもあります!
今夏は違う方法です##◇jQueryをインストール
“`perl:ターミナル
% yarn add jquery
“`
##jQueryを管理化に
“`perl:config/webpack/environment.js
const { environment } = require(‘@rails/webpacker’)
const webpack = require(‘webpack’)environment.plugins.prepend(‘Provide’,
new webpack.ProvidePlugin({
$: ‘jquery’,
jQuery: ‘jquery’,
jquery: ‘jquery’,
})
)module.exports = environment
“`
##jQueryを認識させる??
“
Rails チュートリアル11章で「rails s」が起動しない
#開発環境
vscode
rails 6.0.3
ruby 2.7.4問題点
11.2.2の送信メールのプレビューでrails sを実行すると
“`ruby:ターミナル
/Users/username/environment/sample_app/config/environments/
development.rb:67:in `block in‘
: undefined method `config’ for ActiveSupport:Module (NoMethodError)
Did you mean? concerning
“`
というエラーが発生。テストは通っているのになぜ……。
#解決
調べてみてもいまいちわからなかったのでRails チュートリアルの[GitHub]
(https://github.com/yasslab/sample_apps/blob/master/6_0_0/ch11/config/environments/development.rb)
でソースコードを見くらべてみました。**エラーが出たコ
MVCモデルのまとめ
#今日のテーマ
CRUDアプリの基礎部分を作り終えたので、今回はMVCモデルについて学んだことを投稿していこうと思います。#MVCモデル
MVCモデルとは、ソフトウェア設計モデルの一つであり、プログラムの処理をModel,View,Controllerに分けて開発を行う方法のことである。
利点としては、役割別にすることで独立性が高くなり、依存性が少なくなることで、効率的なアプリケーション開発が行えることである。また、ある箇所の変更が他の要素に影響しにくくなるということも挙げられる。#MVCモデルの概要
MVCモデルでは、以下のようにデータが処理されます(自分でまとめたものです)。ざっくりまとめると、– ユーザーが、URLでアクセス
– ルーティングにより、必要なControllerに割り当てられる。
– Modelが必要なデータを取得する。
– 取得したデータをもとに、Viewを作成して、ControllerにHTMLを返す
– 生成したHTMLをユーザーに返す。![スクリーンショット 2021-08-17 14.51.35.png](https://qiita-i
dockerでmysql8.0を利用する最小確認構成
### 概要
### フォルダ構成
“`tree
.
├─docker-compose.yml
└─mysql
└─conf.d
└─mysql.cnf
“`### ファイル
“`docker-compose.yml
version: ‘3.8’
services:
db:
image: mysql:8.0
ports:
– ‘3306:3306’
volumes:
– ./mysql/conf.d:/etc/mysql/conf.d
– mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
TZ: “Asia/Tokyo”
volumes:
mysql:
“`“`mysql/conf.d/mysql.cnf
[mysqld]
default_authentication_plugin = mysql_native_password
grpc ruby の UInt64Value フィールドの使い方を凡ミスしてた
gprc ruby で、UInt64Value タイプのフィールドにnilを設定する時に以下のミスをしてた。
## 再現手順
“`proto
syntax = “proto3”;
package myapp.post;
option ruby_package = “PostPb”;import “google/protobuf/wrappers.proto”;
message GetLatestPostIdRequest {
uint64 user_id = 1;
}message GetLatestPostIdResponse {
google.protobuf.UInt64Value post_id = 1; /// 注目!
}
“`このprotoを使用して生成したgrpc rubyサーバーにおいて、post_idにnullを設定したいときに前者の方法で設定してしまっていた。
### case1 `post_id = nil` を与える場合
以下。`Google::Protobuf::UInt64Value.new`の出番はない。“`
deviseのメモ
##サインアップ、サインイン後のリダイレクト
“`application_controller.rb
#サインアップ
def after_sign_up_path_for(resource)
リダイレクト先のパス名
end#サインイン
def after_sign_in_path_for(resource)
リダイレクト先のパス名
end
“`##ログアウト
“`ビュー
<%= link_to 'ログアウト', destroy_user_session_path, method: :delete %>
“`##ログイン済ユーザーのみにアクセスを許可する
ログインが必要なコントローラに“`
before_action :authenticate_user!
“`##ログインしているかの判定
ログインしていれば、True
していなければ、Falseを返す“`
user_signed_in?
“`
deviseの導入
##gemfileにdeviseを追加
“`gemfile
gem ‘devise’
“`##bundleをインストール
“`
$ docker-compose run web bundle install
“`gemfileが変更されたので、buildする
“`
$ docker-compose build
“`##deviseをインストール
“`
$ docker-compose run web rails g devise:install
“`##モデルの作成
“`
docker-compose run web rails g devise モデル名
“`##アラートの表示
bodyタグ内に“`application.html.erb
<%= notice %>
<%= alert %>
<%= yield %>
“`##deviseのビューの作成
“`
docker-co
【メモ】bin/rails db:drop実行に失敗した時の対処法
## 症状
ターミナルで**$ bin/rails db:drop**コマンドを入力したら以下のような画面が表示された
“`terminal:terminal
PG::ObjectInUse: ERROR: database “XXXxxxx” is being accessed by other users
DETAIL: There are 3 other sessions using the database.rails aborted!
ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR: database “XXXxxxx” is being accessed by other users
DETAIL: There are 3 other sessions using the database.“`
## 対処
原因は作成中のアプリ以外に接続しているアプリなどはないのに接続されっぱなしになっている模様。
**$ bin/rails db:migrate:reset**しても改善されな
ruby on railsでのユーザー管理機能について
この記事ではruby on rails 6.0.0を使用しています。!
今回はdeviseのgemを紹介したいと思います。
deviseって何?
devisとはユーザー管理機能を実装するためのgemです。
会員登録やログイン・ログアウト機能を簡易に実装することができるgemです。!導入方法
導入は簡単です。!
![05ca375321ad0851c0be9c6b3a07691b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1902434/e791767e-878d-e529-cc2d-c73d9f4d8fab.png)
Gemfileに gem ‘devise’ と記述してbundle installをするだけです。!!
【Ruby on Rails】新規登録時のエラーメッセージ発生後にリロードするとルーティングエラーになる問題を解決した話
#解決したい課題
* 新規会員登録時に、エラーメッセージ表示後に、リロードすると発生するRunningErrorを解決したい
#結論
* [GET]/userを呼び出していたので、そのまま入力する
#原因と対策
###1.エラー文![スクリーンショット 2021-08-17 8.40.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/6c8a0029-314c-1447-0b3c-ab116be75de3.png)
###2.rails routesルーティング確認
![スクリーンショット 2021-08-16 21.41.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/47f20649-a8ae-9aad-1232-c1f9586a167b.png)
そもそもGETがない、、、!
###3.routes.rbに記載
resourcesを使っていたのでi
Railsチュートリアルmodule SessionsHelperを例にmoduleとHelperの役割を見てみる
Railsチュートリアルも9章に入ったのですが、Sessionが出てきてからかなり難易度が上がったように感じたので、知識の定着を図ることも兼ねて、理解が曖昧な部分を自分用にまとめておきます。
##module SessionsHelperとは
Sessionコントローラーを生成した時点で、自動的にmodule SessionsHelperも生まれてました。
まず、**module**というのはclassと同様に部品の集まりです。以下の説明がわかりやすいと思います。
>Rubyにはオブジェクト指向で一般的なクラス以外にも、モジュールという概念が存在します。モジュールではクラスと同じように定数やメソッドをまとめたり、クラスに組み込んで多重継承を実現したり、クラスなどをまとめることで名前空間を提供するなど、いろいろな使い方ができます。 https://qiita.com/shiopon01/items/fd6803f792398c5219cd
ちなみにクラスとモジュールの違いに関する説明は[こちら](https://qiita.com/fukumone/items/2dd4d2d1
railsチュートリアル 第3章 テスト駆動
##テストから始める
自動化テストを作成して、機能が正しく実装されたことを確認する習慣をつける。
アプリケーションを開発しながらテストスイート(Test Suite) をみっちり作成しておけば、いざというときのセーフティネットにもなる。
テストを作成するということは、その分コードを余分に書くことになりますが、正しく行えば、むしろテストがないときよりも確実に開発速度がアップします。
コントローラテスト、モデルテスト、統合テストの3つの種類がある。
統合テストは、とりあえず強いらしい。
(ユーザーがWebブラウザでアプリケーションとやりとりする操作をシミュレートできるので特に強力です。)###最初のテスト
genelateで自動生成された static_pages_controller_test.rb を見てみる。“`rb
require ‘test_helper’class StaticPagesControllerTest < ActionDispatch::IntegrationTest test "should get home" do get
Rails6でデータベースを変更する (sqlite3→MySQL)
#rails db:system:change –to= を知る
前回の記事でデータベースを変更する為、database.ymlを書き換えたりしましたが、Rails6ではrails db:system:change –to=というコマンドで一瞬で変更できました。
“`
$ bin/rails db:system:change –to=mysql
conflict config/database.yml
Overwrite /Users/ユーザー名/アプリ名/config/database.yml? (enter “h” for help) [Ynaqdhm] Y
force config/database.yml
gsub Gemfile
gsub Gemfile
“`database.ymlを確認すると書き換わってます!
![スクリーンショット 2021-08-16 23.40.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.c