Rails関連のことを調べてみた2021年11月24日

Rails関連のことを調べてみた2021年11月24日
目次

【Railsチュートリアル】 プロフィール画像をアプリ内で設定できるように変更

#はじめに

Railsチュートリアル第6版sample_appにおいて、プロフィール画像にはgravatarが使用されているが、ポートフォリオを作成するに際して、プロフィール画像をアプリ内で設定できるようにしていく。

**前提**
第6版sample_appが完成している

#初期画像を設定#

usersテーブルにimage_nameカラムを追加する。

“`
$ rails g migration add_image_name_to_users
“`

“`rb:db/migrate/[timestamp]_add_image_name_to_users.rb
class AddImageNameToUsers < ActiveRecord::Migration[6.1] def change add_column :users, :image_name, :string end end ``` ``` $ rails db:migrate ``` 初期画像default_user.jpgをapp/assets/imagesディレクトリ下に用意しておく

元記事を表示

ActiveRecordクエリメソッドまとめ

#はじめに
ご覧頂きありがとうございます。
初学者がActiveRecordのクエリメソッドと生成されるSQLと比較しながら、まとめました。
また個々のメソッドの詳しい使い方に関してはRailsドキュメントを参照ください。

#find
idを指定してレコードを取得
見つからなかった場合は例外(ActiveRecord::RecordNotFound)が発生

“`
User.find(1)
# SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
“`

#find_by
条件を指定して、レコード1件取得する
見つからなかった場合はnilを返却

“`
User.find_by(id: 1)
# SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
“`

#first
idで昇順に並び替えて、最初の1件を取得

“`
User.first
# SELECT `users`.* FROM `users` ORDER BY `users`.`

元記事を表示

Could not reach host index.rubygems.org. Check your network connection and try again. と言うエラーについて。

### Cloud9を使ってrailsチュートリアルを進めているのですが、`Could not reach host index.rubygems.org. Check your network connection and try again. `と言うエラーについて教えていただきたいです。

### 発生している問題・エラー

“`
$ bundle install
$ bundle update
“`
などを叩くと

“`
Could not reach host index.rubygems.org.
Check your network connection and try again.
“`

と表示されます。

自分で試したことといえば数分時間をおいてから新しくディレクトリを作り直すことしかできず、(お手上げ)しかし、それでなぜかエラーが表示されなくなり、問題なく先ほどのコードを叩くとinstall されてupdate出来てしまいました。

そこで、なぜ解決できたのか質問させてください。

hostに行けないとエラーが出た場合(Could not reac

元記事を表示

ruby on rails tutorial3章を始めたら出てきたThere was insufficient space〜 というエラーの解決方法

やっと3章に突入して意気揚々と進めていくと、

“`ruby:qiita.rb

There was an error while trying to write to
`/tmp/xxxxxxxxxxxxxxxxxxxx/versions`. There was
insufficient space remaining on the device.

“`

がこんにちは。

どうやら何かの容量がないということらしい。

そうこうしているうちに、awsのターミナルにコードを入力できなくなる。
![スクリーンショット 2021-11-23 10.30.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2144713/a365d842-4b6f-973f-26eb-5265ba55315b.png)
![スクリーンショット 2021-11-23 10.30.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/214

元記事を表示

Rails×RSpec×Docker×CircleCI

#はじめに
RailsアプリをDocker上で構築し、CircleCIを用いて、RSpecによる自動テスト、またHerokuへの自動デプロイの仕組みを実現していく。

**環境**

– フレームワーク : Rails
– テストフレームワーク : RSpec
– データベース : MySQL
– コンテナ : Docker(Docker Compose)
– CI/CDツール : CircleCI
– サーバー : Heroku

**前提**
GitHub、Herokuに登録済み
Docker、Docker Composeをインストール済み

**参考**
山浦清透さんの[Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース](https://youtu.be/lZD1MIHwMBY)という動画を参考にさせていただく。

#Docker環境でRailsアプリを作成

作業用ディレクトリを用意し、必要なファイルを作成する。
今回はqiita-railsというディレクトリ内で作業していく。

“`
qiita-rails/
├ src/

元記事を表示

Rails x jQueryで投稿にコメントをAjaxで追加・削除可能にした

#環境
>ruby 3.0.2
>Rails 6.1.4.1
>jQuery

#目標
![画面収録-2021-11-22-19.05.18-1-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621282/83fcef18-fbf4-6e90-1352-6b1bd085b189.gif)

※コメントは投稿詳細ページで表示・追加・削除可能な状態
コメントを投稿 → コメントが保存されフラッシュメッセージが表示
コメントを削除 → コメントが削除されフラッシュメッセージが表示
コメント送信時バリデーションに引っかかる → エラ〜メッセージが表示

#モデル
~~~user.rb
has_many :posts, dependent: :destroy
has_many :comments
~~~

~~~post.rb
belongs_to :user
has_many :comments, dependent: :destroy
~~~

~~~comment.rb
belongs_to :user

元記事を表示

Rails 投稿したTaskが削除できない

・起きている問題
GithubにPushしたもので、投稿したTaskの削除が出来ない。

下記のように、コード部分には特に欠陥はないように見える。

config.routes.rb

resources :tasks

app/tasks_Controller.rb

def destroy
@task.destroy

flash[:success] = ‘Task は正常に削除されました’
redirect_to tasks_url
end

app/views/tasks/show.html.erb

“`
<%= link_to 'このタスクを編集する', edit_task_path(@task), class: 'btn btn-light' %>
<%= link_to 'このタスクを削除する', @task, method: :delete, data: { confirm: '本当に削除してよろしいですか?' }, class: 'btn btn-danger' %>
“`

元記事を表示

【rails】AWS EC2ボリューム 増量による「No space left on device @ io_write」エラー解消

#1.状況

・AWS EC2
・Nginx
・rails 5.2.6

容量不足が原因で発生する「No space left on device @ io_write」エラーが発生
以下コマンドをターミナルに打ち込む。

“`
[ec2-user ~] $ df -h
“`

Use100%となっているファイルシステム「/dev/xvda1」の容量が不足してたためにエラーが発生したと思われる。

“`
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 492M 0 492M 0% /dev/shm
tmpfs 492M 26M 467M 6% /run
tmpfs 492M 0 492M 0% /sys/fs/cgroup
/dev/xvda1 10G 10G 0 100% /
tmpfs

元記事を表示

【初心者向け】翻訳ファイル(YML)編集後から「InvalidLocaleData」のエラーになる

###■環境
・Windows10(64bit)
・Ruby 2.7.4
・Rails 5.2.6
###■翻訳ファイル編集後から「InvalidLocaleData」のエラーになる
####状況
Railsアプリケーションを国際化対応(i18n)するために、翻訳ファイルである「ja.yml」と「en.yml」を編集した。
しかし、その後から全ビューが以下のエラーで表示不可になった。

 I18n::InvalidLocaleData in 【コントローラ名】#【アクション名】
 Showing 【ビュー名】 where line #【行番号】 raised:
 can not load translations from 【アプリケーションの絶対パス】/config/locales/en.yml:
 #): did not find expected key while parsing a block mapping at line 【行番号】 column 【列番号】>

####原因
ダブルクォーテーション(”)で囲

元記事を表示

Rails6をDocker+MySQLで環境構築(Windows11)

#はじめに
この記事では11/22現在、DockerでRuby on Railsの環境を構築する方向けの内容です。完成したものはGithubにて[ソースコード](https://github.com/hikobend/docker_rails)を公開しています。

またDockerをインストールする手順は、

[上の動画](https://www.youtube.com/watch?v=LSQKHW01ACo&t=0s&ab_channel=%E3%81%A0%E3%82%8C%E3%81%A7%E3%82%82%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%2F%E5%B1%B1%

元記事を表示

rails5 belongs_to 默认不能为空,报错must exist

1: 在config/application.rb设置 config.active_record.belongs_to_required_by_default = false

2: belongs_to 的时候添加optional: true

3: xxxxxxx
4: xxxxxxxx
5: xxxxxxxxx

元記事を表示

railsのトップページを表示するまで

 毎回railsのトップページを表示させるまで、必ずどこかでエラーが発生するので記録しておきます。
 ※動作はCloud9、DBはMySQLで実施しています。

#1.railsの新規作成
“`
$ rails new アプリケーション名 -d mysql
“`
ここでDBを指定しない場合は

“`
$ rails new アプリケーション名
“`

#2.database.ymlのパスワード入力
confingディレクトリのdatabase.ymlのpasswordを入力

“`
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: パスワード
socket: /var/lib/mysql/mysql.sock
“`
パスワードは直接入力するとセキュリティ上問題が発生するおそれがあるため、環境変数を推奨。

#3.データベースの新規作成
“`
$ cd アプリケーション名
“`
でディレクトリを変更した後に

“`
$ rails d

元記事を表示

【個人開発】バチェラーの優勝予想をする放置ゲームを開発しました

> 最初から優勝者を当てていたのに、その証拠がなく誰にも自慢できなかった。

これがバチェラー・ジャパン シーズン2(2018)を見終えたときから
自分の中に残っていたモヤモヤであり、本アプリ開発の背景です。

## サービス概要
[![Image from Gyazo](https://i.gyazo.com/06ced0101bbc63e1f402b3bd7a900bdf.jpg)](https://bachelor-derby4.herokuapp.com/)
文字通り「バチェラー・ジャパン シーズン4」の優勝予想をするシンプルなゲームです。
1分で遊べて人間観察力の自慢ができるサービスです。

https://bachelor-derby4.herokuapp.com/

## 使用技術
– Ruby
– Ruby on Rails(API)
– slim
– sorcery
– jwt
– meta-tags
– JavaScript
– axios
– bootstrap
– Vue.js
– Vuex
– V

元記事を表示

Dockerを使ってRails5の初期環境をサクッと構築する

## はじめに

そうだ、Rails環境、作ろう。
(BGM: 「My Favorite Things / The Sound of Music」)

## この記事の目標

– `docker compose up` したらホスト側からrailsのウェルカムページが表示できるコンテナイメージを作成するDokerfileおよびdocker-compose.ymlを作成する。
– DBは個人的な好みでpostgresqlにする(それほど特にこだわりはないけど)
– DBはホスト側のSQLツールから接続できるようにする。
– ホスト側の環境は極力汚さない。

## 作業環境

– Windows10 Pro(MacOSでも手順は変わらないと思います)
– Docker Desktop version 4.1.1
– Visual Studio Code 1.59.1
– 以下の機能拡張をインストールしておく。
– Remote Development
– Docker

## 作成手順

### docker-compose.ymlの構成

コンテナを2つ作ることとします。

元記事を表示

【ポートフォリオ解説】date-matchの全てがこれで分かる!

#初めに
この記事は、date-matchを詳細に解説した記事です。
この記事とGitHubのREADMEとの違いは次のとおりです。

“`
この記事:date-matchをより詳細に解説して、情報を網羅的に把握ができる。
README:date-matchの概要を把握ができる。
“`
date-matchの辞書的な位置付けとして、この記事を作成しました。
気になる項目だけでもご覧頂けたら、幸いです。
※随時、項目を追加予定です。

#アプリ概要
あなたの行きたい場所やイベントを提案・検索することで、デート相手を効率よく見つけることができるマッチングアプリです。
主に、次の3点ができます。

“`
1. 行きたい日時やプランなどを添えて、提案ができる
2. 住所やキーワードなどで検索、行きたい日時が近い順などで並び替えができる
3. ダイレクトメッセージを通じて、招待ができる
“`

これらが出来ることで、既存のマッチングアプリにはない、このアプリ特有のメリットが3点あります。

“`
1. 自分の行きたい場所に共感してくれている人、行きたい日時が合う人から、お相手を効率よく

元記事を表示

Railsで複雑なSQLを書いた時のお話(複数テーブル結合・相関サブクエリなど)

# 記事について
2021年4月からwebエンジニアとして働いています。まだエンジニア歴1年未満のペーペーです。
月に1~2回、学んだことをアウトプットするために記事を書いていこうと思います。記事内容は実務使う技術だったり、技術書や動画で学んだことだったり、適当に興味あることを書いていきます。

# 今回の背景
Railsを使った開発業務で複雑なSQL書く必要があったので、その時調べたことや気をつけたことをまとめてみます。ちなみに使っているDBはMYSQL。

# 目次
1. SQLのみで書いてみる
2. Railsっぽく書き換える
3. セキュリティ対策を考える
4. エラー対策を考える
5. その他SQL書くときに便利な書き方を考える
6. まとめ

## 1. SQLのみで書いてみる
最初からmodelクラスに書いてくとわけわからなくなるので、SequelProなどを使ってSQLを書いてそれを元にRailsを組み立てていくほうが圧倒的に効率がいいことを学んだ。
そして今回業務で書いたSQLはざっと以下の構成。

“`sql
SELECT `取得したい値`
FROM `相関サ

元記事を表示

【Rails × Vue・ SPA】<%if logged_in?>のような書き方をvueで再現する方法

初めてVueを使用してrailsアプリのSPA化を行う際にrailsのviewで記述していた<%if logged_in?>のような書き方について詰まったのでその方法についてまとめました。

#結論
vuexを使う。
インストール方法については割愛します。
※私はVue.js超入門を参考にしました。
https://booklive.jp/product/index/title_id/914468/vol_no/001

#Vuexの使用法

今回はstore.jsというファイルに書いていくと仮定します。
ログイン中かどうか、管理者ユーザーかどうか、ゲストログイン中かどうかという3点について条件分岐してページの表示内容を変更するためのvuexは下記の通りです。

“`

import { createStore } from ‘vuex’

export const store = createStore ({
state() {
return {
loggedIn: false,
admin: false,
guest: false

元記事を表示

Rubyにおける : の意味

#はじめに
Rubyでコードを書いていると、`:`や`::`がよく出てきますが、
いまいちはっきりと理解できていなかったためまとめてみます。

##シンボル

シンボルとは、任意の文字列に`1対1`に対応するオブジェクト
`:hoge`のように表す
下記のように、文字列が都度異なるIDになるのに対し、シンボルではすべて同じIDになる

“`ruby
[1] pry(main)> :hoge.object_id
=> 2307228
[2] pry(main)> :hoge.object_id
=> 2307228
[3] pry(main)> “hoge”.object_id
=> 300
[4] pry(main)> “hoge”.object_id
=> 320
“`

##ハッシュのキーにシンボルで使う場合
ハッシュのキーには一般的に文字列ではなく、シンボルを使用する
理由としては、文字列よりも高速で値を取り出すことができるため

“`ruby
[1] pry(main)> hash = { name: ‘太郎’, age: 20 }
=> {:name=>”太郎”, :

元記事を表示

<ゲストログイン機能>ゲストユーザーの検索にidを使用するのは避ける方が良い

# はじめに
この記事はプログラミング学習中に得た知見を備忘録としてまとめたものです。
知っている人にとっては当たり前であったり理解が足りていないと感じられる内容も含むかと思いますので、あらかじめご了承ください。

# この記事で分かること
– Railsにおいてテーブルの主キーにはAUTO INCREMENTが設定されています。
– そのため、値がuniqueになるように自動採番されます
– `$ rails db:reset`でテーブルの再構築をした際、開発環境はAUNO INCREMENTは自動的にリセットされますが、本番環境(Heroku)ではリセットされません
– そのため、ゲストユーザーなど初期データで投入するとしても、テーブルのidカラムに依存した処理はNGです。

# 環境
**ローカル環境**
– Ruby 6.1.4
– Rails 3.0.2
– mysql2 0.5.3

**本番環境**
– Heroku
– ClearDB MySQL

# 背景
####ポートフォリオの作成においてゲストログイン機能を実装
すでにHerokuにデプロイしているアプリ

元記事を表示

Rails ruby 2.6.0 のdockerイメージでwebpackが動作しない

###
Ruby 2.6.0でインストールされるyarnのversionが古い可能性がある。

“`
#Dockerfile

RUN set -x && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \
echo ‘deb http://dl.yarnpkg.com/debian/ stable main’ > /etc/apt/sources.list.d/yarn.list

RUN set -x && apt-get update -qq && \
apt-get install -yq build-essential yarn

“`

コンテナ内でversionを確認

“`
yarn –version
1.22.15
“`

これで動作した。

元記事を表示

OTHERカテゴリの最新記事