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

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

Docker + React + Rails6 APIの環境構築メモ

## はじめに
標記の環境構築を初めて実施したので備忘録として記録します。

参考にさせていただいた記事、教材
https://qiita.com/taki_21/items/613f6a00bc432d1c221d
https://qiita.com/asami___t/items/256f76c3c8a9bd5d0732
[Dockerを利用した開発環境の構築方法を学ぼう!](https://www.techpit.jp/courses/31)
[Docker公式docs](https://docs.docker.com/)

## 環境
macOS Monterey 12.3.1
Docker version 20.10.13
docker-compose version 1.29.2

## 0. ファイル構成
以下の通りディレクトリ、ファイルを作成する。(中身はまだ空)
myapp/
┣ backend/
┃ ┣ Dockerfile
┃ ┣ entrypoint.sh
┃ ┣ Gemfile
┃ ┗ Gemfile.lock
┣ frontend/
┃ ┗ Dockerfi

元記事を表示

error /node_modules/node-sass: Command failed.の対処法

mac OS バージョン11.6
エディタ…VScode
Rails 6.0.4

# やりたいこと
yarnコマンドがエラーなく通るようにしたい。

# エラー内容
“`
% yarn add jquery
(省略)
error /node_modules/node-sass: Command failed.
“`

yarn installや他のyarnコマンドも試しましたが、全部同じエラー。

# 原因
nodejsのバージョンもしくはnode-sassバージョンに原因があるみたい。
これからバージョンを正しく指定していきます。

# 解決策
初めに “`% nodebrew install v14.15.0“` を試すがエラーが出る。

まずはNodebrewをインストールする必要があるみたい。

・インストール

“`% brew install nodebrew“`

・確認
“`nodebrew -v“`
バージョンが表示されればOK。

・環境変数を追加
ターミナルで以下を実行。

“`
export PATH=$HOME/.nodebr

元記事を表示

【30歳から目指すwebエンジニア学習録】Rails6でjQueryの導入につまずいた話

# エラーの発見
– 「いいね」ボタンをAjaxで作ろうとしていた
– jQueryを仕込んでも変化せず、、、
– ターミナルを見るとjs.erbファイルには到達している。
– ブラウザのコンソールを見ると`$ is not define`のエラーログが。

# 解決策
– `$ is not define` で検索するとrails6ではjQueryの導入方法が変わったとの記事があった。
https://qiita.com/RIN_HM/items/bdbd76f5015b3c15bfe9
– こちらの海外の記事の指示に従って直していく。

Introducing jQuery in Rails 6 Using Webpacker

# 手順1 application.jsファイルを移動する
1. assetsの`application.js`ファイルを
1. app/javascript/packsフォルダに移動する。
![image.png](https://qiita-image-store.s3.a

元記事を表示

【Rails】ERROR: Can’t install RMagick 4.2.5. Can’t find the ImageMagick library or one of the dependent libraries.の対処法

mac OS バージョン11.6
エディタ…VScode
Rails 6.0.4

# やりたいこと
bundle installした時にエラーが出ないようにしたい

# エラー内容
“`
% bundle install
(省略)
Gem::Ext::BuildError: ERROR: Failed to build gem
native extension.

(省略)
ERROR: Can’t install RMagick 4.2.5.
Can’t find the ImageMagick library or one of the
dependent libraries.
Check the mkmf.log file for more detailed information.

(省略)
An error occurred while installing
rmagick (4.2.5), and Bundler cannot continue.
“`

だいぶ端折りましたが、エラー文で文字が赤くなっている部分だけ抜粋しました。

# 原因
“`
Can’t i

元記事を表示

Rails 命名規則について

# Rails 命名規則について

## コントローラを作成する(小文字で複数形)
“`ruby:controller.rb
$ rails g controller homes
“`

コントローラ名 複数形、先頭は英小文字 homes
コントローラのクラス名 複数形、先頭は英大文字 HomesController
ファイル名 複数形、先頭は英小文字 homes_controller.rb

## モデルを作成する(先頭大文字で単数形)
“`ruby:model.rb
$ rails g model List
“`
モデル名 単数形、先頭は英大文字 List
モデルのファイル名 単数形、先頭は英小文字 list.rb
テーブル名 複数形、先頭は英小文字 lists

https://www.wakuwakubank.com/posts/804-it-naming-convention/

https://designsupply-web.com/media/development/4052/

元記事を表示

railsチュートリアルをなるべく嚙み砕く 2章

#railsチュートリアル第2章ですね
この章はscaffoldを使って簡単なアプリを作り出すようです

### 2.1.1
ユーザーのモデル設計です。ユーザーを必要な要素を簡単に書き出すと
| user | 型 |
| — | — |
|id|integer|
|name|string|
|email|string|

ユーザーを識別するための一意なidと名前、メールアドレスですね。
一意というのは他に無い、唯一ということです。

### 2.1.2
マイクロポストのモデル設計です。 マイクロポストというのはTwitterのツイートのことですね。つまりはユーザーがする投稿です。

| microposts | 型 |
| — | — |
|id|integer|
|content|string|
|user_id|integer|

マイクロポストのid これはユーザーのidと同じで一意であることを表しています。そして文章のcontentと、どの ユーザーが投稿したかを表すuser_idです

### 2.2
UsersリソースとHTTPプロトコルという言葉が出てきま

元記事を表示

積み上げ♯2

*= require treeは コメントアウトじゃない
↑ディレクトリ

Destroyアクションについて
find(params[:id])findメソッドによってカラムのレコードを探し出す

●次の学習までの疑問点
bootstrapってどう使うんだろうか?

元記事を表示

rails5 progate 整理メモ

# パスワードの安全な取り扱いを学ぼう
サービスには他人のアカウントに不正にログインされてします危険性がある。
それでは安全にするためにはどうすればいいのか?

##  安全性の高いパスワード
万が一パスワードを覗き見られたり、データが盗まれても、パスワードの内容がわからない状態

## どのように安全にするか? ハッシュ化
ハッシュ化された特別な文字列。このようにハッシュ化することで安全性を高めることができる

## Gemfileを編集しよう
Rails でパスワードをハッシュ化する際は、gemというツールを必要。

## Gemとは
RubyやRailsでプログラミングをする際に「よく使う機能」をパッケージ化したもの
Railsにインストールすることで使用することができます。
今回は“`bcrypt“`という“`「ハッシュ化するgem」“`を使います。

## どうやってインストールするのか?
インストールしたいgemを記述するGemfileというファイルが存在します。
つまり
“`Gemfile“`にファイル名を記述することによってインストールできるのか?
###

元記事を表示

【30歳から目指すwebエンジニア学習録】bootstrap5系の導入でちょっとつまづいた話

# 起こったこと
– こちらの記事を参考にbotstrapを導入(とても丁寧でわかりやすい記事です)
https://www.techpit.jp/courses/2/curriculums/3/sections/15/parts/51
– こんなエラーが出た。
– どうやらWebpackerが見つからないということらしい
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530541/b9e4f285-19e1-7336-164d-4a73ad960ca8.png)

# 解決まで流れ
– こちらの記事を参考にinstallからcompileまでをやってみた
https://qiita.com/ahuiru/items/062bbc1b351819a3eeb8
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530541/c5d645b5-c674-58e9-b91f-2a80940e4a

元記事を表示

【30歳から目指すwebエンジニア学習録】rails generate で余計なファイルを作らない設定をする

# やりたいこと
– rails g コマンドでは、testファイルやhelperファイルなど、一緒に作ってくれる
– が、不要なファイルが作られてしまう。
– そこで、config/application.rbに記述することで、生成されるフォルダを制御する

# 結論
– config/application.rb ファイルに記述。
– ORmapperやらテンプレートエンジンまで設定できる。
– fixtureはFactoryBotを使いたいときとかに設定すると便利そう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2530541/d36ba371-9058-f0db-f8c7-8a565eaf9c93.png)

# 参考

##### ジェネレーターのワークフローをカスタマイズする
https://railsguides.jp/generators.html#%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3

元記事を表示

RailsアプリケーションをCloudRunで動かしてみるまで

# ゴール
* Cloud Run でRailsアプリケーションを動かせるようにする。
* ローカルからContainerRegistryにコンテナをPushし、そこからCloudRunにコマンドでデプロイする。

# 実行環境
* Ruby
* 3.1.2
* Ruby on Rails
* 7

持病の関係で1年ほどブランクがあり、仕事に戻るため知識を取り戻す&Dockerをそれなりに使えるようにするために、RailsアプリケーションをCloudRunにデプロイする方法をまとめてみました。

# Railsアプリケーション
* 今回はDB周りは無視したいので、 `–skip-active-record` で `rails new` します。
* またこの記事はRailsアプリケーションの開発が目的ではないので、アクセスするとただ文字列が表示されるだけのRailsアプリを用意します(Railsじゃなくてもw)

## 準備
* `$ rails _7.0.3_ new –skip-active-record kaesudake `
* `$ bundle exec r

元記事を表示

Rails 検索機能を実装する

### 1、ransackのgemをインストール
“`gemfile
gem ‘ransack’
“`

### 2、アクションに検索処理を実装
“`boards_controller.rb
def index
@boards = Board.page(params[:page]).includes(:user)
@q = Board.ransack(params[:q])
@results = @q.result
end
“`
params[:q]には実際に検索した値がデータとしてが入っている。
ransackメソッドは引数に渡した値を元にDBからデータを抽出している。
resultメソッドはransackメソッドで検索した内容をActiveRecordのオブジェクトに変換する。

### 3、検索フォームを作成する。
“`_search.html.erb
<%= search_form_for @q, url: url do |f| %>
<%= f.search_field :title_or_body_cont,class:'form-control'

元記事を表示

rails5 progate 整理メモ

# いいねした投稿の一覧を表示しよう(1)
「いいね!」をした投稿を一覧で表示するために、likesアクションをusersコントローラ内に作成しましょう。
## ルーティングを設定
“`routes.rb
get “users/:id/likes” => “users#likes”
“`
## usersコントローラーのlikesアクションを設定
“`users_controller.rb
.
.
.
def likes
end
.
.
.
“`
## アクション名と同じhtml名を設定
likes.html.erbを作成する。

## いいねした投稿の一覧を表示させるためのリンクを作成する
“`html
.
.
.

  • <%= link_to("投稿", "/users/#{@user.id}") %>
  • <%= link_to("いいね!", "/users/#{@user.id}/likes") %>

.

元記事を表示

Rails 6 + Webpacker + tailwindcss-railsでError: Cannot find module ‘third-party plugins’

Webpackerを使用しているRails6アプリにGemの`tailwindcss-rails`でTailwind CSSを導入し、YarnでdaisyUIを導入したところ、`production`環境で`rake assets:precompile`中にエラーが発生しました。
daisyUI以外のプラグインをYarnでインストールしても同じようなエラーが発生すると思います。

“`
.
.
.
remote: Running: rake assets:precompile
remote: node:internal/modules/cjs/loader:933
remote: const err = new Error(message);
remote: ^
remote:
remote: Error: Cannot find module ‘daisyui’
remote: Require stack:
remote: – /tmp/build_3e

元記事を表示

rails5 progate 整理メモ いいねボタン

# 「いいね!取り消し」ボタンを作ろう
likesコントローラにdestroyアクションを作成、@current_user.idとparams[:post_id]をもとに削除する。
“`いいね済み“`にリンクをつけてアクションをつける。
## ルーティングを設定
“`routes.rb
.
.
.
post “likes/:post_id/destroy” => “likes#destroy”
.
.
.
“`
これでurlを入力すると“`destroy“`アクションが動くようにする。

## destroyアクションがどのような内容かを設定する
“`likes_controller.rb
.
.
.
def destroy
@like = Like.find_by(user_id: @current_user, post_id: params[:post_id])
@like.destroy
redirect_to(“/posts/#{params[:post_id]”)
end
.
.
.
“`
## 投稿の詳細ページに“`like

元記事を表示

rails ページネーションの実装

### 1、gem kaminariをインストール
“`
gem ‘kaminari’
“`
としbundle installで完了。

### 2、デフォルトの設定をいじる

“`
rails g kaminari:config
“`
コマンドでページネーションの設定を書き込むファイルを作成。

“`kaminari_config.rb
# frozen_string_literal: true

Kaminari.configure do |config|
# config.default_per_page = 25
# config.max_per_page = nil
# config.window = 4
# config.outer_window = 0
# config.left = 0
# config.right = 0
# config.page_method_name = :page
# config.param_name = :page
# config.max_pages = nil
# config.para

元記事を表示

Railsでtodoアプリを作った

# 下準備

まずはファイルを作成する
“`
rails new rails-todo
“`
でファイル作成。その後
“`
cd rails-todo
“`
で目的のディレクトリに移動
# Modelを作成
“`
rails g model Task title:string
“`
でstring型のtitleというカラム名を持ったTaskテーブルというモデルを作成した。
このままではデータベースに反映されていないので
“`
rake db:migrate
“`
でデータベースに反映させる。
# Controllerを作成する
“`
rails g controller Tasks
“`
でコントローラーを作成。コントローラーは基本複数形であることに注意。
次に作成されたコントローラーにアクションを追加。/tasksにアクセスした際のアクションを追加。Task.allで全タスクを取得。
“`ruby:app/controller/tasks_controller.rb
class TasksController < ApplicationController

元記事を表示

【Rails】seedの使い方

mac OS バージョン11.6
エディタ…VScode
Rails 6.0.4

テストデータを作るとマイグレーションファイルをresetした時にすぐにデータを呼び戻せる→開発がよりスムーズにいくとのことなので、Railsで用意されているシーディングを学んでいきます。

railsではseedファイルに入れておきたいデータを“`db/seeds.rb“`に記述していきます。

“`seeds.rb
Movie.create!(
title:’存在のない子供たち’,
image:File.open(‘./app/assets/images/1015706_03.jpeg’),
released_year:’2019′,
country:’レバノン’,
screening_time:’125′,
synposis:’中東の貧民窟で暮らす12歳のゼインは、貧しい両親が出生届を提出していないため、IDを持っていない。ある日、ゼインが仲良くしていた妹が、知り合いの年上の男性と強制的に結婚させられてしまい、、、’,
genre:’ドラマ’,
release

元記事を表示

インフラエンジニアがTECHCAMPを受講してみた感想

## 受講時の筆者のスペック
– インフラエンジニアとしてSIerに10年勤務
– ネットワークやサーバなどオンプレミスのインフラ設計・構築・運用が得意
– プログラミングスキル
– 新人研修時にJavaを2週間程度学び、オブジェクト指向が何かくらいは何となく理解している
– 実務では、インフラの保守や自動化の一環で100STEP程度のShellやPerlを作成するくらい
– 変数や配列、辞書型、制御文などプログラミングの基礎的な概念は理解しているがアプリケーション開発の経験は無し
– レベル的には、おそらくこのサイトで定義されている[プログラマレベル](https://www.geekpage.jp/blog/?id=2007/7/9)で言うところのレベル2~3の中間くらい

## 受講時期とコース
– 時期:2019年の12月~翌年1月
– コース:10日間の集中コース(TECHCAMP イナズマ)
– 受講料は、当時18万円程度だったと思います(うろ覚えですが、、)
– このコースは就職までをサポートするコースではなく、あくまでプログ

元記事を表示

【Rails】sidekiqでログを出力するための方法を、公式リファレンスから理解する

# 概要
Docker環境で、sidekiqログをローカルで見ようとしたらやり方がわからなかったので備忘録として残します。

# 内容
[公式リファレンス](https://github.com/mperham/sidekiq/wiki/Logging)を参考にしながら進めます。
早速実際の様子です。

“`
class YourWorker
include Sidekiq::Worker

def perform(*args)
logger.info “Things are happening.”
logger.debug { “My args: #{args.inspect}” }
end
end
“`

## logeer.infoを利用する
def perform以下を見てください。logger.info/debugと記載されています。

このlogger.〇〇(ログレベルが入ります)の後ろに、出力したい変数やエラーメッセージなどを指定します。

もう少し例を具体的にみてみましょう。
例えば、事前に処理した変数をsidekiq側に送れているかどう

元記事を表示

OTHERカテゴリの最新記事