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

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

【Rails】seed_fuまとめ

## 何がうれしいか
– seedデータの一部を変更した時、変更したファイルだけを読み込み、データの更新や追加ができる
– デフォルトの`seeds.rb`の場合、既存のデータを削除してから再度読み込まなきゃいけない
– 環境ごとにseedデータを分けやすくなる

## インストール
“`rb:Gemfile
gem ‘seed-fu’
“`
“`bash
$ bundle install
“`
“`bash
$ mkdir db/fixtures # 必須
# 以下、環境ごとにseedファイルを分けたい場合に作成
$ mkdir db/fixtures/development
$ mkdir db/fixtures/production
“`

## データを読み込む
“`bash
$ touch db/fixtures/development/01_user.rb #ファイル名は自由。アルファベット順に読み込まれる。
“`
以下の2通りの書き方がある。データが多い時は2つ目の書き方の方が良さそう。

“`rb:基本の書き方
User.seed do |s|

元記事を表示

AWSにデプロイ後、よく使うコマンド

##EC2にSSHで接続し、git pullしてからよく使うコマンドまとめました。
– 使用頻度が多いものを自分用に簡単にまとめました。

##環境
rails 5.2.4
ruby 2.6.3
Cloud9
MySQL

##AWSの構成

![スクリーンショット 2021-02-25 8.15.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/972403/e5ee3e19-f468-b43c-d43b-1b7fb902b197.png)

“`
EC2にSSHで接続する方法
$ ssh -i ~/.ssh/キー名.pem ec2-user@xx.xx.xx.xx

Nginxの再起動する方法
$ sudo systemctl restart nginx

アプリ(puma)起動する方法
$ rails s -e production

アプリ(puma)停止する方法
$ kill プロセスID
どちらも同じです
$ kill $(cat tmp/pids/puma.pid)
“`

元記事を表示

Dockerのコンテナ立ち上げで上手くいかなかった時にやったこと

##はじめに
初学者で、今回が初めての投稿になります。
[Docker超入門 #5](https://www.youtube.com/watch?v=ZxwHVaq7FJo&t=853s)
(動画内容としましては *イメージ作成→コンテナ作成→コンテナ起動* の順になります)
こちらの動画の内容に沿って学習した際に起こったエラー、そしてどう対処したかの記事になります

## エラー内容
イメージ作成するとこまでは上手く行ったのですがコンテナ作成時にエラー表示が出ました。
結論、今回のエラーはイメージ内の誤字にありました。

## やって見たこと

まずは作成はできていたものの、「*イメージ作成*」が上手く行っていないのではと思いファイル内の誤字脱字チェックに入りました。やはり2箇所誤字発見できました。そして今回はイメージファイルにミスがあったものの、イメージが作成出来てしまったのだとわかりました

対処の流れとしては
「①*間違って起動したコンテナの停止→そのコンテナの削除→誤字含むイメージの削除*」
続いて
「②*修正後のイメージ作成→コンテナ立ち上げ→コンテナ起動*」で上手く

元記事を表示

railsを使ってアプリを作る 登録編

####データベースにデータを登録####

#####ルーティングの作成#####
ルーティングに登録する時はpostで登録する
“`post “animals/create” => “animals#create”“`

postで登録する時は、フォームで入力した値をコントローラーで受け取る時に使うらしい

#####viewの作成#####
送りたい内容を
<%= form_tag "/animals/create" do %>

<% end %>
で囲む
#####コントローラーの作成#####
viewからのデータを取得する
view = Animal.new(name: params[:name])
view.save

登録が完了したら、別ページに遷移させる(リダイレクト)
redirect_to “/animals/index”

元記事を表示

railsを使ってアプリを作る3

####詳細ページ等のid付きのページの作成と表示####

#####mvcの作成#####
urlが“`/details/1“`みたいにする場合は、ルーティングの書き方を
get “details/:id” => “details#show
にする

detailsコントローラーにshowメソッドを作成する

show.html.erbのファイルを作成する

#####idの取得と利用方法#####
コントローラーでparams[:id] で取得する
取得した値を
“`@id = params[:id]“`とし、viewで“`<%= @id %>“`と書いて使う

画面に置くリンクはこんな感じ
“`<% @details.each do |detail| %>
  <%=link_to (animal.content,"/animal/#{detail.id}")%>
<% end %>“`

元記事を表示

ポートフォリオ制作録(Day1:環境構築~デプロイ)

## はじめに
– 今日は,railsの開発環境をvscodeで構築し,localhostとheroku上でhello worldが表示されるまで進めました

## 発生したエラーと解決策
1.herokuへデプロイ出来ない①

デプロイ時にweb pack not foundとエラーがでました。warningの文でnode.jsが古いよとあったので、node.jsをインストール(同時にnpmも)したら解決。

2.herokuへデプロイできない②

チュートリアルのままbundle installをしていたが、その際にインストールされるbundlerのバージョンがherokuに対応していないらしく,デプロイができなかった。bundleのバージョンをherokuに対応しているものにして再インストールして解決

3.application errorが出るよ問題

herokuにデプロイできたがapplicationエラーが発生。エラー文を読むと,postgreのバージョンが変だよとのことなので、指定し直したらできました

## 参考
– Rails チュートリアル

元記事を表示

CSSで文字に角度と奥行きをつける記述

最近、cssのレイアウト崩れに悩まされている毎日。
新しいcssやjQueryを見つけては、スゲーって興奮しています。
色んな実装を試してみたい今日この頃。

とりあえず、備忘録書いていきます。

  

#文字を傾ける

“`
.item {
transform: rotate(-20deg);
}
“`

と記述します。
この場合、文字が **半時計** に回転します。
マイナスを取ると普通の **時計周り** に回転します。
  

 
この**transformプロパティ**には色々な使い方があるみたいです。

他には

#奥行きを出す

“`
.item {
transform: perspective(150px) rotateX(45deg);
}
“`
  
この**perspective**と言うのが **視点** と言う意味で
もう一つの**rotate**と言うのが **回転** と言う意味になります。
最後に**X(エックス)軸**に回転と言うことで奥行きができます。
  
 

数値を変えればまた違った角度になったりするので、
使う機会があれ

元記事を表示

.NET系エンジニアがRubyを学ぶときにとりあえず抑えておくポイント※随時更新

# はじめに
実は最近、Rubyの勉強をチェリー本で始め、こないだ読み終えました。Rubyを学ぼうと決めた理由なんですが、とある名刺管理サービス会社のCTOの方がインタビュー記事で**「エンジニアこそ事業にコミットすることが大切」「プロなら経済価値に直結するコードを書くべきだ」**という記事を見つけ、めちゃめちゃ感銘を受けました。

**で?**ってなるんですが、実は日本のスタートアップや自社サービスを展開している企業のRuby(Rails)のシェア率・覇権がすごい!

つまり、**長いものには巻かれろ!!**ってことで、日本でRuby(Rails)を学べば、経済価値を生む機会が増えるんでないかと考えたわけです。

ちなみに僕はC# (ASP.NET MVC)を業務で使用しています。

# 動的型付言語と静的型付言語について
まず本題に入る前に大事なことがあります。それは言語のタイプです。
C#やJavaなどは静的言語、RubyやPHPは動的言語にカテゴライズされてます。

“`ruby:dynamic.rb
# Ruby
hoge = ‘動的言語です’
“`

“`c#:dyn

元記事を表示

[Solidus] 入れ子構造 商品カテゴリーの取得

#はじめに
Solidusで追加機能実装をする際、商品カテゴリーで採用されている入れ子構造を把握する必要があったため、紹介します。
入れ子構造は、ツリー構造をもとに設計されおり、ツリー(木)やルート(根)、リーフ(葉),ノード(節)などの言葉が出ます。

#到達点
以下の2点を達成する

・solidusの商品カテゴリーで採用されている入れ子構造を理解する

・Gem Awesome Nested Setで使用できるメソッドを理解する

#商品カテゴリーで採用されている入れ子構造
今回、商品カテゴリーは以下の通り

“`
Category
|–Bags
|–Mugs
|–Clothing
|–Shirts
|–T-Shirts

Brand
|–Chanel
|–Vuitton
“`
一つ一つのツリーをSpree::Taxonomyモデルとし、
今回は、Category(taxonomy.id=1)とBrand(taxonomy.id=2)が該当する。
rootとも表現できる。

各ツリーのノードをSpree::Taxonモデルとし

元記事を表示

【Rails】既存のテーブルに関連付けを追加するには?

##解決したい問題

ユーザーと投稿を関連付けをしたく、postsテーブルにuser_idカラムを追加した。
しかし、別に新たなマイグレーションを実行するたびに、なぜかschema上で、user_idカラムが消えてしまう。

##最初は関連付けに関してあまり考えず進めていた

“`db/migrate/20201115015429_add_user_id_to_posts.rb
class AddUserIdToPosts < ActiveRecord::Migration[6.0] def change def change add_column :posts, :user_id ,:integer end end end ``` ```app/models/post.rb class Post < ApplicationRecord belongs_to :user
“`

“`app/models/user.rb
class User < ApplicationRecord ha

元記事を表示

Railsのdeviseで2種類のユーザーを作成する方法

rails初学者です。
オリジナルアプリ開発にて、deviseを使って2種類のユーザーを作成したかったのですが、方法がわからず他の記事を見ながら調べてきたのでまとめてみました。

## この記事の目指すところ
食べログのようなアプリで、
お店を利用する側のユーザー **customer_user**モデルと
お店を投稿する側のユーザー **owner_user**モデルの
2種類のモデルを作成する。
またそれぞれにnameカラムを持たせ、ストロングパラメータを設定する。

## 環境
ruby ‘2.6.5’
rails ‘6.0.0’
devise ‘4.7.3’

※deviseがrailsアプリにインストールされている前提

## 各モデルの生成
それぞれのモデルを生成していきます。
deviseでuserモデルを生成する方法と全く同じように、ターミナル(コマンドライン)でコマンドを実行していきます。

まずcustomer_userモデルを生成します。

“`terminal
$ rails g devise customer_user
“`

次にowner_userモデ

元記事を表示

git add . しようとしたら fatal: not a git repository (or any of the parent directories): .gitと怒られた!

“`java
fatal: not a git repository (or any of the parent directories): .git
“`

– new リポジトリは作ってある

### ⭐️やったこと
– User の登録

“`
$ git config –global user.name “xxxx”
$ git config –global user.email “xxxxxx@gmail.com”
“`

– git の初期化

“`
$ git init
Initialized empty Git repository in 作業しているディレクトリ/.git/
“`

– git branch で確認

“`
git branch
* master
“`

– 再度

“`
git add .
“`
– 無事に動きました!

元記事を表示

【Docs】RSpecをとりあえず実務で使えるようになるための資料集

# 【前提とする知識】
– Ruby構文
– RailsのModel周りの知識

# 【資料集】
## 1. RSpec概要の理解
– [RSpec入門](https://dotinstall.com/lessons/basic_rspec)
* 動画でプログラミングを学ぶことができるサイト[「ドットインストール」](https://dotinstall.com/)のプレミアム用コンテンツ(月額980円)
* 「RSpecが何者なのか」という全体をつかむことができる
+ これを最後まで理解すれば以後検索等により自力で学習を進めることも可能
* 授業に出てくるのに対応したコードを[手元で書きつつ](https://github.com/GandT/learning/tree/master/Ruby/season2/p155-162)最後まで視聴した

### 補足資料
1. [rspecのdescribe, context, subject, letなどの書き分け](http://kei-p3.hatenablog.com/entry/2016/0

元記事を表示

【Rails + Vue.js + docker環境】Webpackが取り込めない原因と対処法

#発生したエラーと、解決手順

コンポーネントをjavascriptへコンパイル時にエラー発生

“`
$ docker-compose run web bin/webpack
“`

↓エラー

“`
starting container process caused: exec: “bin/webpack”: stat bin/webpack: no such file or directory: unknown
“`

webpackがないということでインストール。

【参考】
[Webpackerを使ったRailsでwebpackがNo such file or directory](https://a-records.info/rails-webpacker-no-such-file-or-directory/)

##webpackのインストール

“`
$ docker-compose run –rm web rails webpacker:install
“`
すると下記エラー。

“`
Don’t know how to build task ‘w

元記事を表示

プログラミングの学習アウトプット

# まず初めに

今日からQiitaにプログラミングで学習したことをアウトプットするために投稿していこうと思います。

# 1. ActiveHashを利用したデータのファイルの書き方

まず、ActiveHashとは、都道府県名などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるGemである。

例えばあるフリマアプリで、出品するという機能においてカテゴリーの選択を表示したいというときにActivehashを使用するとする。

まずカテゴリーモデルを作り、

“`ruby
class Category < ActiveHash::Base self.data = [ { id: 1, name: '--' }, { id: 2, name: 'レディース' }, { id: 3, name: 'メンズ' }, { id: 4, name: 'ベビー・キッズ' }, { id: 5, name: 'インテリア・住まい・小物' }, { id: 6, name: '本・音楽・ゲーム'

元記事を表示

Ruby on Railsが生まれた背景について学んだこと

# 調べた経緯
Ruby on Railsを一通り勉強した後で、Railsがどのような点で優れているのかを知りたくなり、生まれた背景について調べてみました。Railsがより好きになりました。まだまだ未熟ですので、誤りなどありましたら教えていただければ幸いです^ ^

# Railsが誕生する前の時代
Rails誕生前の時代、SOAの考え方が主流で、サービス間の連携にはSOAPやXMLを用いており、自由に様々な製品を結合してシステムを組み立てることができた。

* SOA (Service Oriented Arthitechture) アプリケーションの機能を独立したサービスとして部品化し、それらを必要に応じて組み合わせていくことにより新たなアプリケーションを構築する考え方。サービス間の連携にはSOAPやXMLといった標準化されたデータ形式やプロトコルが用いられ、特定のソフトウェア実行基盤に縛られることなく自由に様々な製品を結合して情報システムを組み立てられる。

* SOAP (Simple Object Access Protocol) 異なるコンピュータ上で動作するプログラム同士

元記事を表示

referencesで外部キー設定をしたら、ActiveRecord::MismatchedForeignKeyで詰まった時の解決法(Rails)

## 環境
Rails6,
MySQL

## 状況
マイグレーションファイルを書き、マイグレートすると、以下のようなエラー文が表示されました。

“`
Caused by:
ActiveRecord::MismatchedForeignKey: Column `food_id` on table `orders` does not match column `id` on `foods`, which has type `bigint(20)`. To resolve this issue, change the type of the `food_id` column on `orders` to be :bigint. (For example `t.bigint :food_id`)

“`

要するに、参照されるカラムの型と、参照する側のカラムの型が一致しないので、外部キー設定ができないと表示されています。

## 解決した方法

エラー文から、原因はカラムの型と思いましたが、マイグレーションファイルを作成した順番が原因でした。
簡略化したコードで説明します。
temp

元記事を表示

【Rails】 本番環境でのエラー(ActiveRecord::StatementInvalid (SQLite3::SQLException: no such table:inquiries)

はじめに

普段開発する際は、cloud9を使用しており、今回はAWSでデプロイをしたときの話になります。
本番環境の構築も既に済んでおり、git pullにて最新の情報を反映させようとしていました。
ところが、マイグレートを実行しようとしたところ、そんなテーブルはないと怒られてしまったのです。

エラーが起こるまで

〜本番環境EC2上〜

①git pull origin master

②bundle exec rails db:migrate RAILS_ENV=production
⇩ エラーが発生する
####ActiveRecord::StatementInvalid (SQLite3::SQLException: no such table:inquiries
#####※ 「inquiries」このようなテーブルはない、と怒られています。

“`terminal.
〜本番環境(EC2)〜
$ git pull origin master
$ bundle exec rails db:migrate RAILS_ENV=production

A

元記事を表示

【図解あり】Rails6でFont Awesomeを用いてSNSアイコンを表示させる

Rails6でアプリケーションにFont Awesomeを導入した際の手順をまとめてみました。
超初心者向けです。

#####前回: [Rails6にBootstrapを導入してトップページを作成する](https://qiita.com/mitaninjin/items/93553535483919d17a81)の続きになります。

#####完成形![icon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1140333/e5894271-1768-5666-e476-32d5213a1179.png)

##Font Awesomeの導入
“`:コンソール
yarn add @fortawesome/fontawesome-free
“`
Font Awesomeを読み込ませる

“`javascript:app/javascript/packs/application.js
import ‘bootstrap’;
import ‘@fortawesome/fontawesome-fre

元記事を表示

結合テストコード ActiveHashの場合

オリジナルアプリの結合テストコードを書いている中、
ActiveHashを使用しているところのテストコードの書き方がわからず、
手こずってしまいました。
記事にして復習したいと思います。
FactoryBotとFakerは導入済みです。

## バージョン

・Ruby 2.6.5
・Rails 6.0.0

## 新規投稿の結合テストコード

[![Image from Gyazo](https://i.gyazo.com/3bea6b7f6092bae69d2f8a0d0a66adbe.jpg)](https://gyazo.com/3bea6b7f6092bae69d2f8a0d0a66adbe)

今回私が、結合テストコードを行う部分のページです。
「お題の投稿が上手く行く時」のコードを記述します。

“`ruby
context “お題が投稿できる時” do
it “ログインしたユーザーは投稿できる” do
# ログインする
visit new_user_session_path
fill_in “メールアドレス”, with: @use

元記事を表示

OTHERカテゴリの最新記事