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

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

action textで画像が表示されない

## 現象
action textを利用したリッチテキストをレンダリングした際に画像が下のようにはてなのアイコンが表示されてしまう。

![スクリーンショット 2022-05-12 23.03.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/960407/83bbd65b-60a1-16da-409c-1d8c9bbfb472.png)

## 発生エラー
“`
LoadError (Could not open library ‘vips.42’: dlopen(vips.42, 0x0005): tried: ‘vips.42’ (no such file), ‘/usr/local/lib/vips.42’ (no such file), ‘/usr/lib/vips.42’ (no such file), ‘/Users/higuchiyuujirou/workspace/imagine/vips.42’ (no such file), ‘/usr/local/lib/vips.42’

元記事を表示

Docker上のRailsでbin/rails tailwindcss:watchが効かない場合の対処方法

Docker上のRails6アプリにGemの`tailwindcss-rails`でTailwind CSSを導入し、`bin/dev`で動かしたところ、コンテナ起動時にしか`app/assets/builds/tailwind.css`が更新されませんでした。
コードを変更したときは`bin/rails tailwindcss:build`を実行しなければなりませんでした。

## 実行環境

– Windows 10 Home
– WSL 2
– Ubuntu 20.04 LTS
– Docker 20.10.11
– docker-compose 1.29.2
– Rails 6.1.4.1
– Ruby 2.7.4

RubyのDockerイメージには`ruby:2.7.4-alpine`を使用
ソースコードはWindowsの`C`ドライブ下
Gemの`tailwindcss-rails`でTailwind CSSを導入

https://github.com/rails/tailwindcss-rails

`bin/rails tailwindcss:install`で`b

元記事を表示

rails5 progate 整理メモ 

# パスワードカラムを追加
“`
rails g migration add_password_to_users
“`
“`
rails generate migration user image_name:string
“`
違いは何だろう?
## カラムのデータ型を指定
“`rb
class AddPasswordToUsers < ActiveRecord::Migration[5.0] def change add_column :users, :password, :string end end ``` ## 1番目のユーザーのパスワードを変える ```rb tweet_app $ rails console Loading development environment (Rails 5.0.3) [1] pry(main)> user = User.first
User Load (0.1ms) SELECT “users”.* FROM “users” ORDER BY “users”.”id” ASC LIMIT ? [[“LIM

元記事を表示

Action Cableで作ったリアルタイムチャットをECS(Fargate)上で動作させる

# 前提
フロントエンド・バックエンドを分離してアプリを作成
ローカル環境チャット機能実装済み

# 本番で動くよう修正

修正するファイルは4つ
– cable.yml
– nginx.conf
– production.rb
– createConsumerしているファイル(この場合communities/_id.vue)

“`cable.yml
development:
adapter: async

test:
adapter: test

production:
adapter: async # 使用したいアダプタを書く(redisが望ましいが、動作チェックのため一時的にasync使用)
“`

“`nginx.conf

upstream hoge {
server unix:///app/tmp/sockets/puma.sock;
}

server {

# ここから追記
location /cable {
proxy_pass http://hoge/cable; # upstr

元記事を表示

Notification API 通知サブスクリプション登録方法

# 目標
SPAPI Notification API (旧 MWS Subscription API)で通知サブスクリプション登録します。
今回は **ANY_OFFER_CHANGED** という通知タイプで登録行います。

各通知タイプの説明はこちらでご確認ください:
https://developer-docs.amazon.com/sp-api/docs/notifications-api-v1-use-case-guide#notificationtype

# 前提
・ AWSアカウントを作成されている
・ SPAPIに連携済で、リクエストコールできる状態のストアがあること

# 1. SQSメッセージキュー作成
Amazon通知の宛先を作成します。
使うのは[Amazon Simple Queue Service(SQS)](http://aws.amazon.com/sqs/)です。

タイプは標準に設定して、名前を入れてキューを作成します。
今回はデフォルト設定で、許可ポリシー、暗号化、デッドレターキュー、タグ全てなしです。
アクセスポリシー

Decoratorをrailsに導入する

Decoratorの説明の前に例え話から。
Modelでは日時を”2018-07-12 18:12:34”という値で保持していますが、Viewでは”2018/7/12”と表示したい場合を考える。
前提としてモデルはデータの格納に関する情報だけを書くところ。ビューは情報を表示する役割だけを担うべき。じゃあ上の”2018-07-12 18:12:34”を”2018/7/12”に変える処理はビューとモデルのどちらに書くべきか?

正解はビューとモデルのどちらでもなくDecoraterに書くべき。

話が遅くなったがDecoraterとは名前の通りデコレーターで、情報を加工する処理を書き込む。
それはビューとモデルの間に置く。

### Decoraterを実装する

Decoraterを実装するにはDraperというgemを使う。
“`
gem ‘draper’
“`
で“`bundle install“`を実行。

###Decoraterを使って置き換えを行う。

##### 1、decoratorのメソッドを定義するファイルを作成する。
以下のコマンドである。
“`
rail

Rails 7 の便利な ComparisonValidator でちとハマった

Ruby on Rails で日付の前後関係に関するバリデーションをどうやって書こうか調べていたら,Rails 7 で,ComparisonValidator なるものが導入されたことを知った。

この記事は,ComparisonValidator の簡単な紹介と,私がハマった落とし穴について。

# 概要

ComparisonValidator は,モデルオブジェクトの属性値を他の値と比較するバリデーター。

Rails 7 より前でも,数値に関しては NumericalityValidator を使って

“`rb
validates :amount, numericality: { greater_than: 100 }
“`

みたいなことができていた。この例は,`amount` の値が 100 よりも大きいことを要請する。

これを,数値以外の比較可能な値にまで広げよう,ということらしい。
文字列でも日付でもいいわけだ。

日付を固定値と比較するバリデーションは,たとえば

“`rb
validates :start_date,
comparison: { gre

rails プロゲート 整理メモ

困ったことを書いたものです。

# テーブルに新しいカラムを追加する
“`
rails generate migration user image_name:string
“`
userモデルにstring型のimage_nameカラムを追加する

“`
add_column(テーブル名, カラム名, タイプ(データ型), オプション引数)
“`

テーブルを編集したときは 
“`
rails db:migrate
“`
# ユーザー登録時に初期画像を設定
登録時のアクションに新しく追加しする
“`
@user = User.new(
name: params[:name],
email: params[:email]
image_name: “default_user.jpg”
)
“`
カラムに書いておく。
出典 https://qiita.com/you8/items/137c87945da3cac19953

## SyntaxError in UsersController#show
追加したカラムに“`,`

コンソールからSidekiqの情報を見るときにcreated_at, enqueued_atなどが日時じゃなくて謎の数字

問題

実例をあげます。
試しにデッド状態のジョブをひとつ見てみましょう。

“`ruby
# rails console

Sidekiq::DeadSet.new.to_a.first
=> #3,
“queue”=>”default”,
“class”=>”FooClass”,
“args”=>[“8ecd1021-62d7-4068-8d7b-bb11033163f6”],
“jid”=>”746d59154e31e75f09109f0b”,
“created_at”=>1649321038.4516313,
“enqueued_at”=>1649321184.3722708,
“error_message”=>”undefined method `-‘ for nil:NilClass”,
“error_class”=>”NoMethodError”,
“failed_at

Railsにサンプルデータを作成する方法

### 1,Fakerを導入する
“`
gem ‘faker’
“`
今回私はtest環境とdevelopment環境に反映したいので、
“`
group :development, :test do
# (略)
gem ‘faker’
end
“`
### 2、“`db/seed.rb“`にサンプルデータを作成する処理を書く。

“`rb
# 追加のユーザーをまとめて生成する
99.times do |n|
name = Faker::Name.name
email = “example-#{n+1}@railstutorial.org”
password = “password”
User.create!(name: name,
email: email,
password: password,
password_confirmation: password)
end
“`

### 3,“`rails db:seed“

S3×CloudFront を使用したActionTextの画像アップロード・配信方法

# はじめに

ActionTextから登録された画像や添付ファイルはデフォルトだとサーバー内のローカルディスクに保存されます。

大容量のファイルが溜まり続けた場合、サーバがいつかキャパオーバーになってしまう懸念があります。

そこで、ActionTextから投稿された画像の保存先を、ローカルディスクから`Amazon S3`に変更しストレージ容量を確保し、高速コンテンツ配信サービス(CDN)である`Amazon CloudFront`を使用して、配信を行う構成を実装してみたいと思います。

【環境】
・ AWS(EC2, S3, CloudFront, IAM etc.)
・ Ruby 2.7.3
・ Ruby on Rails 6.1.5

:::note warn
**ActionText**を使用するには、Railsバージョン6系以上が必要です。
:::

[Action Text の概要](https://railsguides.jp/action_text_overview.html)

![スクリーンショット 2022-05-11 6.38.44.png](h

Rails + Vue.jsによる動的タグ付け機能

# はじめに

社会人1年目の問題意識・問題解決の習慣化と情報共有を補助するツールとして[意習(issue)](https://github.com/fumtas1k/issues_app)というアプリを作りました。日頃の業務の中で遭遇するイシューをアウトプット、新人同士で情報共有し、メンターがフォロー/サポートすることで問題意識と解決能力を養う、というアプリです。

タグ機能を作成するときに、`acts-as-taggable-on`による動的タグ付け(複数選択可)とUIに`vue-multiserect`を使用しました。**この組み合わせでの記事が見当たらなかった**ので、記載することとしました。
完成版は、下図の通りです。

![tags.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2493295/c97eb437-768b-7a3c-94bc-20c87c98b176.gif)

## 環境

– Ruby: 3.0.1
– Ruby on Rails: 6.0.3
+ acts-as-

rails5 プロゲートをしながらのメモ

自分用の整理メモです。

# アクションとビューファイルの関係
homeコントローラのtopアクションは、コントローラと同じ名前のビューフォルダ(homeフォルダ)から、アクションと同じ名前のビューファイル(top.html.erb)を探し、ブラウザに返していることを理解しておきましょう。

# パラメータを表示させる
“` routes.rb
post ‘users/hogehoge’, to: ‘users#hogehoge’
“`
‘users/hogehoge’に対してpostをするとusersコントローラのhogehogeアクションを期待する。

“`***.controller.rb
def hogehoge
end
“`
hogehogeが作動して

“`hogehoge.html.erb
<% params[:id] %>
“`
自動的にアクション名に対応しているビューファイルにパラメータを表示できる。

# CSSファイルの場所
CSSファイルは「app/assets/stylesheets」フォルダに入っています。
Railsでは、「stylesheet

メソッドまとめ 第一弾

メソッドまとめ

まずは数値クラスから見ていきましょう。

〜〜数値クラスのメソッド〜〜

数値.round 四捨五入
数値.floor 切り下げ
数値.ceil 切り上げ
数値.truncafe 切り捨て
数値.zero? 0かどうか確かめる
数値.odd? 奇数かどうか確かめる
数値.even? 偶数かどうか確かめる
文字列.to_i 数値に変わる
数字.to_s 文字列に変わる
(?がつくと真偽値を返します。)

“`
num = 7.77

num.round => 8
num.floor => 7
num.ceil => 8
num.trancafe => 7
0.zero? => true
“`

次は文字列クラスのメソッドです。

〜〜文字列の演算式〜〜

“`
“abc” + “xyz” => “abcxyz”
“abc” * 3 => “abcabcabc”
“abc” << "xyz" => “abcxyz” //+との違いは元の変数の中身も+をしたものになる
“aaa@aaa.com” =~ /@/ => 3 //=~は調べたい変数がどこにいるの

<パーミッション>Railsアプリでパーミッションエラー

今回はRailsアプリで発生したパーミッションに関するエラーの
対策を備忘録として残します。

# rails s 時に発生

“`
Errno::EACCES (Permission denied @ apply2files – /Users/ユーザーネーム/Documents/homepage/homepage_on_ruby_on_rails/homepage/tmp/cache/assets/sprockets/v4.0.0/Ku/KueVW_Fgne0MoM9sWUxwZLSJS_YpySO0N2iIaOhPsgg.cache):
“`

とエラーが表示されビューが返されませんでした。

どうやら権限がない?ということらしい。

確認します。
“`
$ ls -al /Users/ユーザーネーム/Documents/homepage/homepage_on_ruby_on_rails/homepage/tmp/cache/assets/sprockets/v4.0.0/ku
total 8
drwxr-xr-x 3 root

Rails7(Hotwire)のSPA体験が快適すぎるので紹介する

Rails7を使った管理画面を業務で、2件ほど進めているのですが、
Rails7から搭載されたHotwireによるSPAっぽい開発が良すぎたので紹介します。

特に今回はRansack、Kaminariをつかった検索一覧画面の実装を紹介します。
これを例えば、Rails API + Vue.jsとかでやろうものなら、なかなか大変ですね。(っていうかめんどくないのでやらない)

# 事前準備
## 今回使うプロジェクトはこちら
https://qiita.com/tikaranimaru/items/70f87b1fe4b1e7166348

## 情報
– ruby2.7
– Rails7.0
– css: tailwind css

## 使用するデータ
シンプルに食べ物を管理するアプリを作りたいと思います
“`rb
# 食べ物をカテゴライズする種別データ
create_table :kinds do |t|
t.string :name

t.timestamps
end

# 食べ物データ
create_table :foods do |t|
t.string :n

railsでNoMethodError: undefined method `silence’と言われたエラーの対応方法

こんにちは。[virapture株式会社](https://virapture.com)の[もぐめっと](https://mogmet.com)です。

本日はトラブルシュートな記事になります。

## 問題

railsで開発していたところ、pumaを使ったrailsのログ出力をdockerでそのまま出力したいと思って設定したら下記のエラーが出てしまいました。

“`
#>
“`

というエラーがでて画像が表示されなくなってしまいました。

## 解決法

調べたら下記に答えがあった。

https://github.com/rails/sprockets-rails/issues/376

早速config/environments/development.rbのファイルを修正した。

“`development.rb
config.logger = Logger.new(STDOUT)
“`

としていたところを

【Rails】actionmeilerのsubjectをi18nで日本語化する

# 初めに

`Rails`でメールの件名を `i18n` で設定する方法を忘備録として残しておきます。

## 環境

– Rails 6.1.4

– Ruby 2.7.4

# 日本語設定

`ja.yml`に日本語を追加することで`subject`を設定できます。
また、引数を与えて動的に変更することもできます。

## user_mailer.rb

“`ruby:user_mailer.rb
class UserMailer < ActionMailer::Base def welcome # mail(to: '宛先' ,suject: '件名') mail(to: '宛先') end def signin(user) mail(to:'宛先', subject: default_i18n_subject(user: user.name)) # 引数を与える場合はdefault_i18n_subjectを利用する end end ``` ## ja.yml ```yaml:ja.yml ja: user_mai

【初心者でも無料でHTTPS化したい!!!】Certbotを用いて実装【画像つき】

# この記事でわかること
HTTPでのデプロイ後Certbotを用いた無料でのHTTPS取得方法を解説します!
独学やスクールでの初学者に向けて丁寧に解説していきます。

参考にしていただけると幸いです^^
また間違っているところがあればご教授お願いします

# 環境
Ruby 2.6.3
Rails 5.2.6
本番環境 nginx/Puma/Amazon Linux2/AWS EC2/MySQL

___※CertbotはAmazon Linuxでは動作しません
Amazon Linux2を使用している場合のみ実装できます___

# 目次
1. EC2にHTTPSを追加する
1. nginxのconfファイルを編集
1. railsのconfigファイルを編集
1. Certbotの実装
1. 自動更新のcronを設定する

# 解説
### 1.EC2にHTTPSを追加する

AWSにログインしEC2を開いて、
インスタンスID > セキュリティ > セキュリティグループの順に進みます。

![C9F6DDB3-7B9F-4E53-B85F-FF5FB7D83440_1_201

【個人開発】母音法を広めたい!劇団四季も使っている『母音法』で発声練習ができるサービス『BOIトレ ~ 母音法で発声練習 ~』をリリースしました!

## まず母音法って?
日本語は母音の「あ・い・う・え・お」と子音でできています。
いわば母音は言葉の土台部分にあたるので、
この土台がしっかり発音できるようになると、ハッキリした声で発音できるようになります。

例)「おはようございます」→「おあおうおあいあう」
という感じで母音のみで発音するのが母音法です

## サービス紹介
劇団四季も使っている発声練習方法の「母音法」で発声練習ができるサービスです。
練習の管理もできるので毎日の記録をつけながら練習ができます

https://www.boitore.jp/

https://github.com/konjikicity/boitore

## なぜ作った?
僕は幼少期より非常に滑舌が悪く、馬鹿にされることが多くありました。