Rails関連のことを調べてみた2020年10月18日

Rails関連のことを調べてみた2020年10月18日

git add .した後にgit statusするとChanges not staged for commit:と出る時の対処法

#内容
GitHubにcommitしようと思いgit add . をしてgit status で確認したところ、”Changes not staged for commit:”と出てうまく反映されてなかった

#実際出たエラー内容
“`:
$ git add .
$ git status
On branch login
Changes to be committed:
(use “git reset HEAD …” to unstage)

modified: app/controllers/users_controller.rb
modified: db/mysql/volumes/ib_logfile0
modified: db/mysql/volumes/ibdata1
modified: db/mysql/volumes/ibtmp1
modified: db/mysql/volumes/myapp_test/users.ibd
modified: db/mysql/volumes/mysql/innodb_inde

元記事を表示

Rails Tutorial 拡張機能の返信機能を作ってみた(その2):modelの変更

Rails Tutorialをの第14章にある、返信機能を作る件で、前回の続きです。
###コーディングの作業でやることを洗い出す
やる作業をおさらいして洗い出します。
・gitでbranchを作る
・testを作る
   model、integration

###modelに列を追加
modelの列の追加はどうやってやるかテキストで探します。
9.1.1でmigrateで列を追加していたことが分かります。

modelでreplyによる表示の有無をどう作るか考えます。改めて仕様を見ます。
@replyは受信者のフィードと送信者のフィードにのみ表示されるようにします。
表示する人で3つに分けて考えます。
1 送信者、2 受信者、3.第3者(送信者でも受信者でもない)

####1 送信者
自分がpostしたmicropostなので、今の機能でも表示されます。

####2 受信者
受信者が送信者をフォローしている場合と、していない場合の2つが考えられます。
受信者が送信者をフォローしている場合は、今の機能でも表示されます。
受信者が送信者をフォローしていない場合は、今の機能では表示

元記事を表示

【Rails】rails s が反応しない、止まらないときの対処法

たまにこの現象が起きるので、備忘としてメモ。
Rails始めたてで同じ状況に陥った方の助けになれば幸いです。

## 事象

ローカルサーバーを立ち上げてchromeで動作確認しながらアプリ制作中…
不安定だなあと思って健気に待っていたら、localhost:3000のタブだけ止まっていることに気づく。
ターミナルで `control + c` を試しても反応しない…なんだこれは…
強制終了するのも恐いしどうしたもんだろうか。

`/articlesを読み込んでる図`
![スクリーンショット 2020-10-07 15.41.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/708469/fbe43808-daf1-b700-8e08-b6a2fc9968a9.png)

## 対処法

1. rubyのPIDを確認
2. rubyのPIDを止める

### 1. rubyのPIDを確認する
`lsof`コマンドで、ポート番号3000で動いている処理を確認する。
↓`lsof -i:3000

元記事を表示

【Rails】画面からアップロードされたXMLファイルをHash型で読み込む方法

Rails(5系)を使ったアプリケーションで、画面からアップロードされたXMLファイルをHash型で読み込みたい場合の実装例です。

## アップロードするXMLファイル
今回は検証用に以下のXMLファイルを使用

“`xml


AAA
BBB
CCC

“`

## html.erbの記述
適当にファイルとボタンタグを配置します。(デザイン・スタイルはお好みでどうぞ!)

“`erb
<%= form_tag xxx_path, multipart: true do %>

<%= file_field_tag :file, class: 'btn btn-primary' %>

元記事を表示

Active StrageをRSpecでテスト

##はじめに
Active Strageを使用し、画像投稿ができるアプリを制作中です。
その際のテストの書き方の例を紹介します。

##factories
“`
FactoryBot.define do
factory :post do

trait :post_image do
image {
fixture_file_upload(“app/assets/images/XXX.PNG”)
}
end

“`

##letを定義
“`

let(定義名) { 定義の内容 }

let(:post_image) { FactoryBot.create(:post_image) }
“`
##使用する(例)
“`
post = FactoryBot.create(:post,:post_image)
“`
##参考にさせて頂いたサイト
https://qiita.com/maca12vel/items/ee4d16827f24f69080ae
https://shuttodev.ha

元記事を表示

[Rails] ActiveStorageを使ってpostsにアバターを表示

#やりたいこと
Posts#index(以下タイムライン)にアバターやユーザー名を表示したい

#前提
devise導入
ActiveStorage導入
アバターをusersモデルに追加

#やり方
postsモデルに`:avatar`の`has_one_attached`とuserインスタンスメソッドを追加

“`Ruby:post.rb
class Post < ApplicationRecord validates :content, {presence: true, length: {maximum: 140}} validates :user_id, {presence: true} has_one_attached :avatar def user return User.find_by(id: self.user_id) end end ``` viewに.userを追加 ```Ruby:index.html.erb <% @posts.each do |post| %>

【0からAWSに挑戦】EC2とVPCを使ってRailsアプリをAWSにデプロイする part1

# 背景
未経験から自社開発系企業の就職を目指します。良質なポートフォリオ作成のためAWSを勉強することにしました。

現状の知識レベルとしては、Ruby on railsを使って簡単なアプリケーション開発、gitを使ったバージョン管理、herokuを使ってデプロイできるレベルです。自分の忘備録かつ、同じくらいのレベルでこれからAWSに挑戦してみようと思っている方に向けて少しでも役に立てればと思います。

# 最終目標
AWSのEC2とVPCを使ってアプリケーションを本番環境で動かすことが目標です。

# 環境
・Ruby on Rails 6.0
・Ruby 2.6.6
・dbはmysqlを使用
・アプリケーションサーバはpumaを使用
・webサーバーはnginxを使用

# 手順
今回は下記手順で進めたいと思います。
 ①VPCを作成
 ②VPC内にサブネットを作成
 ③インターネットゲートウェイ・セキュリティグループ・ルートテーブルの設定
 ④EC2を作成
 ⑤EC2にrails環境を構築、gitからアプリをpullする

では

元記事を表示

データベースの操作(SQL編)

# データベースの操作 ~SQL編~
* SQLの使用方法を知る
* データベースの基本的な操作を理解
* テーブルの基本的な操作を理解

# ターミナルでの使用方法
“`java:ターミナル
# ホームディレクトリに戻る
% cd

# MySQLに接続
% mysql -u root
“`

# Sequel Proでの使用方法
## Sequel Proを使用してログインする際は、下記のように入力
![9f4a2951092ddd67c27a8afcdc73d3d3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/725167/b6efe5f5-a17b-4106-ee03-5e577f138b2b.png)

#ターミナルで以下のSQLを実行

“`java:ターミナル
mysql> CREATE DATABASE sqltest;
“`
#MySQLで以下のSQL文を実行
“`java:ターミナル
mysql> SHOW DATABASES;
“`
# データベースを削除
“`j

元記事を表示

本日の学習まとめ ユーザー管理機能実装にて

#はじめに
 今回は完全に自分用で覚えておきたいことを雑多に書き連ねている。

##正規表現
 

“`ruby

PASSWORD_REGEX = /\A(?=.*?[A-z])(?=.*?[\d])[A-z\d]+\z/i.freeze # 半角英数混合1字以上
ZENKAKU_REGEX = /\A[ぁ-んァ-ン一-龥]+\z/.freeze # 全角ひらカタ漢字
KANA_REGEX = /\A[ァ-ヶー-]+\z/.freeze # 全角カナ
“`

`freeze`は変数が変わらないようにするため。

##バリデーションのオプションをまとめる

“`ruby

with_options presence: true do
validates #オプションをつける
end
“`

##エラーメッセージを表示させる

foem_withの中でrenderメソッドでファイルを呼び出す。そのとき、devise配下のファイルであるように記述をする。

“`ruby

<%= form_with model: @user, url: user_registration

元記事を表示

【Rails初心者向け】RSpecの使い方まとめ(概要を掴む)

#RSpecとは?
RSpecとRuby on RailsやRubyでアプリケーションの動作テストを行うgemです。

利用目的として、大規模サービスなど、チェックミスが起きやすいのでコード化してする。
また、アプリケーションの更新時に毎回一からテストを行う手間を省くこともできる。

#導入方法

“`ruby
group :development, :test do
gem “rspec-rails”
end
“`
※この時、必ずgroup :development, :testの中に記述する。
あとはbunle installで導入は完了です。

#設定をする
“`
% rails g rspec:install
“`
こちらをターミナルから実行して、必要なディレクトリを生成します。
ディレクトリに**spec**ディレクトリができたことを確認してください。

“`
–format documentation
“`
.rspecにこちらを記述することでターミナル上からテストコードの結果をみることができるようになります。

#実際に動かしてみる
今回は簡単なサン

元記事を表示

Rails ブラウザ上で、ルートを確認する

# はじめに
今回は、ブラウザ上でルートの確認の仕方について学習します。

普段は、ターミナルにrails routesをたたき、確認していました。

“`
$ rails routes
Prefix Verb URI Pattern Controller#Action
sessions_new GET /sessions/new(.:format) sessions#new
root GET / static_pages#home
help GET /help(.:format) static_pages#help
about GET /about(.:format) static_pages#about
contact GET /contact(.:format) static_pages#contact
signup GET /s

元記事を表示

EC2にRAILSをデプロイ

https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2

https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e

以上参照。

元記事を表示

Rails if文とunlessの混合条件式の作成

最終課題に向けて調整を行いました。
その際に、条件式をifとunlessの両方を使用するという特殊なパターンに
チャレンジしてみました。備忘録として投稿させて頂きます。

今回はhamlにて記述しています。

“`ruby:sample.rb
#viewファイルにて

.item-show-page__link-btn
-if @item.buyers.present?
%p SOLD OUT
-else
– unless user_signed_in? && @item.user_id == current_user.id
= link_to purchase_item_path(@item.id), class: “item-show-page__link” do
購入画面へ
– else
%p 出品者は購入できません
“`
メソッドの中身
@item 出品情報が入っています。
buyers 購入した履歴のメソッ

元記事を表示

Javascriptで日付を扱う(moment.js)

# はじめに
Qiita初投稿です。
間違っていることがありましたら、ご指摘いただけると幸いです。

# 開発環境
ruby 2.6.5
Rails 6.0.3.3

# 概要
moment.jsとはjavascriptで日付を扱うときに便利なライブラリです。
パッケージ管理面での欠点があるとも言われていますが、まだ主流な技術なので使用してみました。 

# 使用方法
作業中のディレクトリでmoment.jsをインストールします

“`
npm install moment
“`

使用したいjsファイルでmomentを読み込みます

“`javascript:〇〇.js
var moment = require(“moment”);
“`

↓このような書き方で生成できます

“`javascript:〇〇.js
const dt = new moment();
“`

しかし、これだけだとrails sで引っかかります。
↓おそらく、yarnの再インストールが必要になります。

“`
error Lockfile does not contain pattern: “

元記事を表示

Ruby on Rails で特定のViewにCSS を適用する

Ruby on Rails で作ったWebアプリケーションのあるページで、Tableタグで作った表中の文字が上揃えになっていました。
このままでは見た目が悪いので、上下中央揃えとなるよう、CSSを適用する方法を調べましたので自分用メモとして残します。

1.何を修正すれば良いのか?

/marketpurser/app/assets/stylesheets 内のファイルです。
デフォルトで存在するapplication.scss に追記すると、すべてのViewに適用されます。
また、Viewの名前に対応した.scssファイルに追記すると、特定のViewのみに適用されます。

2.どう記述すれば良いのか?

CSSと同じ文法で良いようです。
今回はtableクラスを持ったtableタグ内の、tdタグに適用したいので、以下のように記述しました。

“`/marketpurser/app/assets/stylesheetssample.scss
table.table td {
vertical-align:middle;
}
“`

“`sample.html.erb

元記事を表示

certbot停止からの再インストール

## はじめに
certbotが死にました。。
というよりかは本番環境で運用していたhttps通信の証明証がいきなり破棄されて、戻すのに大変だったので備忘録。

## 開発環境
ruby 2.5.7
Rails 5.2.3
AWS ec2
nginx
puma

## 手順
“`
cd ~
rm -r -f certbot
git clone https://github.com/certbot/certbot.git
cd certbot/
chmod a+x certbot-auto
sudo ./certbot-auto –nginx –debug
※あとはyesに答えるだけ
“`

## エラー集
### エラー①
#### エラーコード
“`
Traceback (most recent call last):
File ““, line 27, in
File ““, line 19, in create_venv
File “/usr/lib64/python2.7/subprocess.py”, li

元記事を表示

“~”で任意の文字を囲む方法

【概要】
—————————————-
1.結論

2.どのようにコーディングするか

3.開発環境

1.結論
—————————————-
gets.chomp、lengthメソッドを使用する!!

2.どのようにコーディングするか
—————————————-

“`ruby
str = gets.chomp #—❶
str_length = str.length
puts(‘~’ * (str_length + 2)) #—❷
puts(‘~’+str+’~’) #—❸
puts(‘~’ * (str_length + 2)) #—❷
“`
このようにすると、下記のようになります。
![スクリーンショット 2020-10-17 15.41.09.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

curl: (77) error setting certificate verify locations: CAfile: ~/anaconda3/ssl/cacert.pem CApath: none の対処法

# 概要
RVMをインストールする際に `\curl -sSL https://get.rvm.io | bash -s stable`を実行したところ、
次のようなエラーが出た。

“`
curl: (77) error setting certificate verify locations:
CAfile: ~/anaconda3/ssl/cacert.pem
CApath: none
“`

# 対処法
以下の処理を実行する。

“`
conda update curl
conda install ca-certificates
“`

以上です。

元記事を表示

[rails] devise導入中のエラー

devise導入中に下記のエラーが出ました。
gemをbundle installしたのち、rails g devise:installを実行。
その後、rails g devise userを実行したのち、rake db:migrateを実行した時に発現したエラーです。

エラー

“`
Mysql2::Error: Table ‘development.users’ doesn’t exist
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:7:in `block in up’
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:5:in `up’
/Users/projects/bin/rails:9:in `
/Users/projects/bin/spring:15:in `
bin/rails:3:in `load’
bin/rails:3:in

元記事を表示

Rails zshを使った環境変数 設定の仕方と記述方法

Google Map API を使用中自分で取得したAPIをそのまま記述してGit Hubのpushしてしまいました。
するとGit Hubからこんなメールが…
*GitGuardian has detected the following Google Key exposed within your GitHub account.*
**GitGuardian は、あなたの GitHub アカウント内で公開されている以下の Google キーを検出しました。**
素晴らしい!GitHubはこんなことまでしてくれるのだと感動しました。
感動している場合ではないのですぐ環境変数に入れて記述を変えようといろいろ調べたので共有させてください

##環境変数とは何か
#####見せたくないものを隠す変数…といったイメージで良いと思います
そして環境変数を設定できるものはたくさんあるのでご自身で良いものを探してみてください!
私の場合は**zsh**を使って環境変数をし設定していきます
#####zshは自称「最強」のシェルらしいです

##Zshのインストール方法
[初心者向け:Zshの導入]

元記事を表示

OTHERカテゴリの最新記事