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

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

Action Textで画像が投稿されない問題を解決した話。

本番環境でActionTextで投稿された画像をAWSのEC2煮上げた画像をS3のバケットの中に保存しておくようにしたのですが、そこで本番環境でS3の方に保存されないというもんだいがおきました。
慌てて検証ツールを見てみるとそこでCROSの処理の問題であるというエラーメッセージが出てきました。
私その時CROSについて全く知らなかったので改めてググって調べてみました。

#CROSとはなにか

ブラウザがオリジン(HTMLを読み込んだサーバのこと)以外のサーバからデータを取得する仕組みです。
今回で言うところの、EC2でHTMLLを読み込まれていますが、画像に関してはS3にあるのでS3からHTMLとして画像を持ってくるといったことが必要になってきます。
その時に役に立つのがCROS処理です。

##出典
https://dev.classmethod.jp/articles/cors-cross-origin-resource-sharing-cross-domain/

#今回の失敗

S3のCROS処理のポリシーを書いておくべき所が空欄だったので、保存ができませんでした。

#解決

元記事を表示

Active Storageで投稿した画像をS3に入れようとしたら権限関係で詰まった話。

AWSのS3に投稿された画像を保存できるようにしよとした時にかなり苦戦したのでそのお話をさせていただければと思います。
S3の権限については学習したはずなのにそのことについてすっかり忘れてしまっていたのでそのお話をさせていただければと思います。

まず、どうやってアクセス権限を得ることができるのかというと、

1つ目として、

“`
EDITOR=”vi” bin/rails credentials:edit
“`
コマンドを使用してシークレットアクセスキーとアクセスキーを入れて環境変数を有効にするコマンドである

“`
source ~/.zshrc
“`

コマンドを打って環境変数を有効化します。

2つめは、S3のコンソールに行って

バケットからアクセス許可の項目に行っていただいて、そこにあるバケットポリシーにJSON形式でコードを書いて許可するやり方です。
私は以下のようにしてアクセスを許可しました。

それは、

“`
{
“Version”: “2012-10-17”,
“Id”: “Policy1544152951996”,
“Stat

元記事を表示

クラスの定義

クラスを使用して以下の表示結果を出力するコードを記述します。

表示結果

“`rb
ワンワン
わたしは犬です
わたしの名前はポチで種類はトイプードルです
“`

仕様

|クラス変数|値|
|–|–|
|type|犬|

|インスタンス変数|値|
|–|–|
|name|ポチ|
|dog_type|トイプードル|

クラスメソッド

|メソッド名|処理|
|–|–|
|say|ワンワン|

インスタンスメソッド

|メソッド名|処理|
|–|–|
|say_type|”私は{クラス変数type}です”|
|self_introduction|わたしの名前は{インスタンス変数name}で種類は{インスタンス変数dog_type}です|

“`rb:雛形
class Dog
@@type = “犬”

def initialize
@name = “マロン”
@dog_type = “トイプードル”
end

def self.say
puts “ワンワン”
end

d

元記事を表示

Railsポートフォリオ #15 READMEの作成

こんにちは:smiley:

今回はReadmeの作成を行いました。
[(前回記事 #14 カテゴリーソート機能)](https://qiita.com/yanoo/items/6bb1715ae25aa27d3beb)

## ポートフォリオの顔とも言える超重要なReadme

今回はポートフォリオにおいて最も重要なものの一つであるReadmeの作成に取り組みました。

Readmeとアプリの最初の画面がポートフォリオにおいて最も大切、もはやそこだけで判断される、なんていう話は皆さんもご存知だと思います。

私が作っているアプリが業務改善系ということもあり、多くの方が作られるSNS系のアプリに比べると使い方がなかなか伝わりにくいので、Readmeでの説明には特に力を入れようと考えていました。

まずは先人たちのものを見せてもらい、何を書けばいいのかを把握するところから始めました。

## 作成時意識したこと
+ 最初にわかりやすい概要を書くことで、そこだけしかみてもらえない場合にも雰囲気を掴んでもらえるようにすること
+ 画像も上の方に一枚貼ることで、少しのスクロールでも目に入るよう

元記事を表示

structure.sqlを使いたい!

# はじめに
Railsではdb:migrateすると、デフォルトでdb/schema.rbを生成されて、このファイルでスキーマ管理をしてくれます。
しかし、ユニークインデックスにwhereを付けるようなRDB固有の命令については、Rails標準のschema.rbで管理し続けるのは限界があるのではないかという問題点があります。
それを解決してくれるのが`structure.sql`で、SQLでスキーマ情報を管理することも可能です。

## structure.sql生成方法
`config/application.rb`に以下を記述して、`rails db:migrate`を実行することで生成されます。

“`config/application.rb
config.active_record.schema_format = :sql # デフォルトでは「:ruby」となっています
“`

### structure.sqlをロードする
生成されたstructure.sqlファイルは、下記のコマンドでデータベースへロードできます。

“`ruby
$ rails db:stru

元記事を表示

バリデーションの種類

こんにちは!
今回の記事はバリデーションについて
あれこれアウトプットしていこうと思います!
僕の理解した範囲のバリデーションについて
記述していこうと思います!

バリデーションとは?

バリデーションとはデータを登録する際に
一定の制約をかけることを言います。
*新規登録ユーザー名が空のデータで登録されるのを防ぐ。
*新規パスワード登録の際に最低6文字以上は入力を強制させる。
といった例が挙げられます。

バリデーションを設定する際はvalidatesメソッドを使用します。
記述方法は以下のとおりです。

“`モデル
validates :カラムの種類, バリデーションの種類

validates :name, presence: true
“`

基本的にデータの登録などテーブルとの
やり取りに関する情報は
モデルを使用します。
コントローラーはモデルの機能を利用して処理を
呼ぶだけの簡単な処理を記述します。

バリデーションの種類

“`モデル
validates :name, presence: true
“`

presen

元記事を表示

【Rails】Herokuにデプロイ後、一部のページで500エラー(Internal Server Error)

#はじめに
本番環境にて500エラーが発生し
1週間ほど悩み通してようやく改善したのでこの機会にまとめておきたいと思います。

#発生している問題
ローカル環境では問題なく動くが、(PostgreSQLへの対応などは済ませてある)
Herokuにデプロイすると、一部のページを開いたときに500エラーが出て「We’re sorry, but something went wrong.」となる。
![error500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1397163/5734db7f-c0a4-8715-efc5-5f25b974a715.png)

`heroku logs -t`でログを見ても500と書いてるだけで何が悪いのかよくわからない

“`
2021-05-14T16:33:21.741002+00:00 heroku[router]: at=info method=GET path=”/recipes” host=myapp.herokuapp.com request_id=58

元記事を表示

草野球の出欠確認Webアプリを作ろう! part.7

これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。

[<<前回の記事](https://qiita.com/tomodachi_uec/items/b1b72b30713e97443230) ##今回やったこと ###前回作ったスケジュールの編集機能の修正点について 前回記事にて、一覧画面からテーブルの一行をクリックすることで、そのスケジュールの編集画面に遷移できるようにする変更をした。しかし、この時は眠くて画面遷移の動作確認を「一覧画面」⇒「編集画面」(⇒既設linkにて「一覧画面」)と、一度しか実施しなかった。 今日、改めて触ってみると、ページリロード後の「一覧画面」⇒「編集画面」⇒「一覧画面」は移動できるが、その後もう一度同じ動きで(或いはテーブルにある別のスケジュール行で)編集画面に遷移しようとしても、何も起こらなかった(!?)。 ![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534558/c7b46f67

元記事を表示

フォロー機能のカウント数を非同期にする!!!

# 某プログラミングスクール転職生の備忘録

こんにちわ!今回はフォロー機能のボタンとカウント数を非同期にしてみた件について紹介しようと思います!

いいね機能やコメント機能の非同期の記事は多いですけど

フォロー機能のボタンとカウント非同期はあんまり見かけないですよね〜

なので、参考になればと思います!今回はしょっぱなおふざけなしでいきましょう!

## 全然カウントしねぇじゃねぇか!!!!

はい、ふざけましたすみません。笑

ということで、最初は全然いうことを聞いてくれなかったです。

まず反応しなかった時の記述を見せます。

“`ruby:relationships/createjs.erbとdestroy.js.erb
$(“#follow_<%= @user.id %>“).html(“<%= j(render 'relationships/follow', user: @user) %>“);

$(“.follow_count_<%= @user.id %>“).html(“<%= link_to follow_user_path(@

元記事を表示

dockerでbinding.pry

##Dockerでbinding.pryするには設定が必要だった。
アタッチということをしなければいけないらしい

Gemfileに下記を記載

“`ruby:Gemfile
group :development do
gem ‘pry-byebug’
end
“`

docker-compose.ymlファイルに下記の2つを設定する
`stdin_open: true
tty: true`

“`ruby:docker-compose.yml
back:
build: back/
command: /bin/sh -c “rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b ‘0.0.0.0’”
stdin_open: true #追記
tty: true #追記
env_file:
– ./back/environments/db.env
# 以下省略

“`

##Gemfileを変更したので、buildしなおす

Dockerfile

元記事を表示

AWSでデプロイしたのに画像が表示されない!!??

## 某プログラミングスクール転職生の備忘録

今回は、デプロイについて解説しようかなと思います!

これのせいでイラつきは頂点に達し、逆に違うことに専念できました。笑

そんな余談は放っておいて、内容としてはデプロイ後の画像表示についてです!

デプロイ経験者からしたらあるある問題かもしれませんが、今回デプロイ初めての私にとっては

かなりの難題でございました笑

題名の通り、画像が写りませんでした。タグの書き方とかも今回は説明しようかなと思ってます。

どうぞご参考にしてください!

ではスタート!

# デプロイしたのに画像が映らない・・・

まず、background-imageの書き方として、開発環境と本番環境では描き方が違います。(僕は最初知りませんでした笑)

“`ruby:application.cssもしくはscss

background-image: url(‘画像の名前(なんちゃら.jpg)’);

background-image: image-url(‘画像の名前(なんちゃら.jpeg)’);

OTHERカテゴリの最新記事