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

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

delegateについて

こんにちは、プレイライフの熊崎です!

昨日の夜食べたラーメンのせいで、若干胃もたれ気味です。
学生の頃はラーメン+ライスでも全然平気だったのに、、、
時の流れを感じますね笑

そんな僕の話は置いておいて、delegateについての記事を書いていきたいと思います。

## deledateとは
> delegateマクロを使って、メソッドを簡単に委譲できます。
https://railsguides.jp/active_support_core_extensions.html?version=6.0#delegate

→ あるクラスに存在するメソッドを他のクラスで使用できるようにする

## どんな時に使用するか?
関連付けられているモデルのメソッドを直接使用したいとき。

## 基本の使い方

“`sample.rb

class SampleUser < ApplicationRecord has_one :sample_plan     # delegateには複数のメソッドを指定できる。 delegate :free_plan?, to: :sample_plan

元記事を表示

Spring Boot学習者が他言語のWebフレームワークを触ってみて気づいたこと

こんにちは。ワタナベトシヒロです。
私はJavaのWebアプリケーションフレームワークであるSpring Bootを学習してきましたが、今回は他の言語のフレームワークも触ってみました。
Spring Boot(Java)、Laravel(PHP)、Ruby on Rails、Django(Python)を比較して、気づいたことを挙げていきます。
ただし、Spring Boot以外のフレームワークでは簡単なCRUD処理のAPIを実装しただけなので、フレームワークへの深い理解はできていません。

# Spring Bootの特徴

## コマンドを入力する機会が少ない?

Spring Bootのプロジェクト作成はWeb上で行ったり、IDEのGUI上で行うことが多いです。

また、LaravelやRailsではモデル作成やコントローラー作成用のコマンドがありますが、Spring Bootではコマンドを使ってファイルを作成する例は見たことがありません。

Spring Bootでは他のフレームワークと比べてCLIを操作する機会が少ない気がします。

## DBのテーブルの作成はSQLで行う

元記事を表示

【Rails】 環境構築

## 手順

#### ① 作業ディレクトリの作成

“`
$ mkdir workspace/my/rails_sample
$ my/rails_sample
“`

#### ② rubyのバージョン切り替え

“`
$ rbenv install 2.7.2
$ rbenv local 2.7.2
$ ruby -v # 指定バーションが表示されて売ればOK
“`

rbenv 〜
rubyのバージョンを切り替えるためのツール

#### ③ bundleとrails

“`
$ gem install bundler

# rubyのライブラリを管理するbundlerをrubyにインストール
“`

“`
$ bundle init

# 生成されたGemfileをgem “rails”に編集

$ bundle install
“`

bundle init 〜
現在の作業ディレクトリ内に、Gemfileを生成

#### ④ プロジェクトの作成

“`
rails _6.0.3.7_ new sample
“`

## その他

– nodeや

元記事を表示

Ruby on Railsを使用する恩恵

おはようございます、プレイライフの熊崎です。

今週は雨の日が多かったですね。
来週も雨の日が多いようで、気が滅入ってしまいます。。。

来週も、雨にも負けず風にも負けず仕事を頑張っていきたいと思います!

## なぜこの記事を書こうと思ったか?
業務を行っていて、railsの機能を充分には使いこなせていなかった。(今振り返ると、そもそも使いこなそうともしていなかったように感じる。)
原因を考えてみたら、下記の原因が考えられた。

– なんでrailsの規約に沿った書き方をしなければいけないのか?という理由が自分の中で明確になっていなかった。
– スピード感を持って開発することが求められている中で、とりあえず動くものを作るということに意識を向け過ぎた。

`スピード感を持って開発することが求められている中で、とりあえず動くものを作るということに意識を向け過ぎた。`に関しては、今までの経験上、後で修正しようと考えても絶対修正まで手が回らないので、都度railsの機能を利用することを徹底することにした。


のように考えても、railsを使用する恩恵の理解が薄いと絶対に上記の意識も薄れて

元記事を表示

searchアクション

1.ルーティング設定をする(app - config - routes.rb)

     collection do
      get ‘search’
     end

2.コントローラーに「searchアクション」を定義する( app – controllers – places_controller.rb)

def search
@places = Place.search(params[:keyword])
end

3.モデルに、self.search(search)を設定する(app -models -place.rb)

 def self.search(search)
  if search != “”
  Place.where(‘name LIKE(?)’, “%#{search}%”)
 else
  Place.all
 end
end

元記事を表示

【mariaDB】データベースの中身の確認について

## 環境
Ruby on rails 6.1.4
ruby 2.6.5
capistrano
mariaDB 5.5.68

## 経緯
AWSのEC2を使った環境構築をしています。
capistranoを使い自動デプロイを完了しています。

ローカル環境ではSequel Proを使っていたので、ローカルで保存した情報はすぐ確認することができました。
しかし、本番環境のデータベースの中身を確認する方法がわからず。

素人丸出しの「mariaDB 中身 確認」だとかで検索しましたが出てくるのは「select * from モデル名で中身見れますよ〜」ばかりでした。(初心者すぎて調べ方が分かっていない)

そもそもDBにたどり着く方法がわからず悩んでいたのですが、なんとか辿り着けたので備忘録を兼ねて記事に残そうと思います。

## コード

ターミナル内
まずEC2へログインします

“`
#ホームディレクトリに移動
xxxx@yyyynoAir ~ % cd

#sshディレクトリに移動
xxxx@yyyynoAir ~ % cd .ssh/

#EC2へログイン(ssh -i ダ

元記事を表示

[メモ] Docker「ruby:3.0-slim-buster」に Rails6 (簡素版) を導入してみる (Django使用経験あり)

# 概要

「Ruby経験あり、Rails 経験なし、JavaScript アプリ開発経験なし」の観点で、
御著書 [『Railsの教科書』](https://railstutorial.jp/textbook) で Rails6 の学習をしてみたときの記録である.

このとき、Dockerイメージ「ruby:3.0-slim-buster」に対して Rails6 を導入してみたので、
書き残しておく. 基本的には次の公式ドキュメントの手順を実施するのだが、少し補足してみた.
・https://guides.rubyonrails.org/getting_started.html

また、Django を用いたバックエンド開発経験はあるので、その視点でメモも書いてみた.

なお、ここでの 簡素版 とはNginx や PostgreSQL や Unicorn などは導入しない、という意味である.

 
# 手順のみ

実行時の UID は root である.
なお、「ruby:3.0-slim-buster」 は Debian 10 なので、Ubuntu 18.04 にも転用できるはず

元記事を表示

Rails chart.js

#chart.jsとは
Railsでグラフ化するためのライブラリです。
Jsとはjavascriptのことです。
グラフと連動することで中の情報を見やすくすることができます。

#chart.js導入
まず導入法についてです。

“` Gemfile

gem ‘chart-js-rails’, ‘~> 0.1.4’ #追記

“`

その後

“`
$ bundle install

“`

その後コントローラー作成

“`
$ rails g controller chart index

“`

ルーティングに追記

“`routes.rb

Rails.application.routes.draw do
root ‘chart#index’
end

“`

package.jsonに追記

“`package.json

{
“name”: “chart_js_sample”,
“private”: true,
“dependencies”: {
“chart.js”: “^2.7.1” ←★追記
}
}

“`

元記事を表示

【Rails】複数モデルの作成日付一覧を重複なく表示する

ポートフォリオ作成中の学びのアウトプットとして投稿させて頂きます。
勉強用アプリを作成中に実装した保存された回答(複数モデル存在)を日付順に重複なく表示する方法です。

#実現したいこと
users_controllerのshowアクションで回答の作成日付一覧をviewに表示してそれぞれの日付をクリックするとその日に作成された回答一覧を確認できるようにしたい。
※下図のイメージ
![2021-09-11 1.17.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1640672/36dfcf86-5ffc-9941-26c5-0b445fd23abf.png)

#モデル

回答用モデルとして「answer」と「reaction」が存在。

#showアクションとviewの中身

“`:users_controller.rb
def show
@answers_dates = current_user.answers.map{|dates| dates.created_at.to_d

元記事を表示

Rails Tutorialで詰まったところのまとめ 第1章

◎コードをWebページに反映させるには「git push heroku」をターミナルで実行(デプロイ)しなければならない

◎「rails server」を実行する際は、「cd ~/environment/hello_app/」でカレントディレクトリを変更してあげる必要あり

◎「heroku create」ができるのは5つまで ▶ 5つ作成したら「heroku apps」でappIDを確認して、「heroku destroy –app 」で削除する

◎リスト1.19 「bundle install –without production」を実施する際は、「cd ~/environment/hello_app/」でカレントディレクトリを変更してあげる必要あり

元記事を表示

コントローラーで定義した値をJSに受け渡す

# 開発環境
– OS:macOS Big Sur 11.2.2
– Ruby:2.6.5
– Ruby on Rails:6.0.0
– テキストエディタ:Visual Studio Code

# つまづいたこと
投稿の詳細画面から非同期通信でDB更新をしたいと考えたときに、更新に必要な値を更新アクションを定義しているコントローラーに渡せず詰まった。

コントローラーからビューファイルに値を渡すときはインスタンス変数を定義するが、JavaScriptへはどうしたらいいのだろう?と思い調べてみた。**gon**というgemの導入により実現できるらしい。

# 実践したこと
[gon](https://github.com/gazay/gon)は簡単にJSファイルにデータを受け渡すために作られたgemらしい。(と、いうことは難しい手順を踏めば使わなくてもできるということか・・・)

使い方は、

①まずgemファイルにgonを定義

“` gemfile
gem ‘gon’
“`

②gemをインストール

“`
% bundle install
“`

③includeの記述

元記事を表示

Rails 開発環境を準備する!

①AWS Cloud9 で新しくIDE(開発環境)を立ち上げ
  ⑴AWS Educateにログインし、マネジメントコンソールにアクセスするよ。
  ⑵Cloud9にアクセスするよ。
  ⑶AWS Cloud9 のトップ画面にて、「Create environment」をクリックするよ。
  ⑷「Name」を入力し、「Next step」だよ。
  ⑸Platform の「Amazon Linux 2 (recommended)」を選択して、「Next step」だよ。
  ⑹Review(最終確認画面)が表示され、「Create environment」だよ。
  ⑺以上!

②AWS Cloud9の設定について
 これは、改善の余地ありですが、お勧めされているのは、
⑴右上の歯車マークにて
*Project Settings
 ・Soft Tabs: 4から2に変更するよ。(タブサイズを2に変更)
 ・On Save, Strip Whitespace: チェックを入れるよ。(余計なスペースの自動削除)
*Experimental
 ・Auto-Save Files:「Off」か

元記事を表示

【Docker】Rails6×react×MySQL環境構築

Dockerでrails api×react×MySQLの開発環境を構築する

## 1. 各種ファイルの準備

### ディレクトリ構成

“`
rails_react
├── api/
│ ├── Dockerfile
│ ├── entrypoint.sh
│ ├── Gemfile
│ └── Gemfile.lock
├── front/
│ └── Dockerfile
└── docker-compose.yml
“`

### docker-compose.yml

“`yaml
version: “3”

services:
api:
build:
context: ./api/
dockerfile: Dockerfile
ports:
– “3333:3333”
volumes:
– ./api:/var/www/api
command: /bin/sh -c “rm -f /var/www/api/tmp/pids/server.pid && b

元記事を表示

バリデーションを日本語に変える

バリデーションを日本語に変えるにはいくつかの手続きを踏まねばなりません。

1,日本語設定に変更

config/application.rbに以下の記述を追加。

config.i18n.default_locale = :ja

“`ruby:config/application.rb
(略)

module BandStarter36553
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0 config.i18n.default_locale = :ja # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into file

元記事を表示

[Rails]本番環境(CentOS)でエラーログを見る方法

#はじめに
CentOS上でrailsアプリを動かした際、エラーログの確認方法をまとめた。
#環境
CentOS7
rails 6.1.4
capistrano 3.16.0
puma 4.3.8

#本番エラーログ確認方法
“`
#logディレクトリへ移動
$ cd /var/www/html/<アプリ名>/current/log
“`
“`
#lsコマンド入力
$ ls
capistrano.log production.log puma_access.log puma_error.log
“`
①capistrano.log → capistrano実行時のログやエラーログ
②production.log → アプリ実行時のログやエラーログ
③puma_access.log → pumaを起動した際のログ
④puma_error.log → puma実行時のエラーログ

“`
#production.logの最新ログ20行分出力
$ tail -n 20 /var/www/html/<アプリ名>/current/log/production.log
“`

#ま

元記事を表示

【コピペ】Railsで選択肢を追加していく方法

#Ruby on Railsで選択肢を追加していく方法

実装後参考サイト https://vlogmatome.herokuapp.com/posts/new

##目次
###1.コントローラーを準備する
###2.モデル・データベース周り
###3.viewのコード
###4.ルートをかく

##実装
###1.コントローラーを準備する
まずはコントローラーを準備します。
今回はブランドを投稿していくWebサイトを作成します。
ブランドの選択肢を投稿ごとに追加していきます。

ブランドの投稿はpostsコントローラー。選択肢の追加はbrandsコントローラーで行っていくこととします。
それでは早速コードを書いてみましょう。

“`ruby:posts_controller.rb
class PostsController < ApplicationController def index @posts = Post.all @brands = Brand.all @brand = Brand.where(brand:"") end def

元記事を表示

Rails6でajaxを使う jQuery3.0

rails6のバージョンだとうまく動かなかったので。
元記事
https://qiita.com/moriwm77/items/ea54c0f34da073801bf1

バージョン
ruby-2.7.4
Rails 6.1.4.1
jquery 3.6.0

とりあえずscaffoldを導入

scaffoldについて
https://qiita.com/tsubasaozawa/items/98f3e64a450d4304fc84

文章を投稿するのでカラムにtitleを使います。

“`
rails g scaffold task title:string
rails db:create # データベース作成
rails db:migrate # マイグレーション実行
“`

“`
yarn add jquery
“`
ここからは下記ページのJqueryの設定を行います

【Rails6】5分でjQueryを導入! 動作確認まで徹底

config/webpack/environment.js

下記コードをコピペして`config/webpack

元記事を表示

20代後半以上の初学者が必ずぶちあたる問題に今ある知識で立ち向かう。

プログラミング学習をしているといつか遭遇する世界のナベ○ツ問題。私は今朝でした。
中々具現化せずにスルーしていく人が多いであろうなか締切が迫っているプロジェクトを差し置いてやる。やらねばならない。

【問題】
「「3の倍数と3のつく数字のときだけアホになります」をターミナルに出力しなさい。」

【構想】
条件分岐と条件の組み合わせを利用して実装ができそうです。
範囲→メインとなる30代の数字は全部出力したいので40までとしましょう。
アホになる→リスペクトも込めて「語尾に”!!!”を付与する」あたりで手を打ちましょう。

【step1】
whileメソッドを使って指定した条件下で繰り返し処理を行うよう大枠を作成しましょう。

“`ruby:qiita.rb
def everything_that_happens_twice_will_surely_happen_a_third_time
num = 1
while num <= 40 do ここに条件を書くよ num = num + 1 end end ``` 1から始まるようnumを定義し、whileメソッド

元記事を表示

【RSpec】ActiveRecord使った複数画像添付のテストコードについて

## 前提
Rails 6.1.4
ruby 2.6.5
ActiveRecord

## 状況
現在Railsを使ってアプリケーションを開発しています。
model単体テストで画像添付のコードを書くのにかなり時間を要しました。(まず正常系のテストが通りませんでした)

## コード

sotreというモデルについてテストしています。
画像ファイル名は「xxx」「yyy」と置き換えてあります。

spec/models/store_spec.rb

“`rb
RSpec.describe Store, type: :model do
describe ‘店舗情報の投稿’ do
let(:store) { FactoryBot.build(:store) }
# let(:images) { fixture_file_upload(‘/xxx.jpeg’, ‘/yyy.png’) }

context ‘店舗情報が投稿できる’ do
it ‘必要な情報が全て入力されていれば投稿できる’ do
store.images = [ f

元記事を表示

【Ruby on Rails】font-awesome-sassを導入してアイコンを重ねて表示する方法

#対象者

* RailsアプリにFont Awesome導入予定の方
* Font Awesomeを重ねて表示したい方

#目的

* アイコンを重ねて表示する!

イメージは下記の通り

![スクリーンショット 2021-09-10 7.35.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1681213/6012ab5c-5ffa-548e-857a-d477a681d4da.png)

#####使用環境

Rails 5.2.5

**注意**:Rails6をご使用中の方は導入方法が異なります。詳しくは[こちら](https://pikawaka.com/rails/font_awesome_sass)を御覧ください

#実際の手順と実例
###1.FontAwesomeを設定する

Gemfile

“`
gem ‘font-awesome-sass’
“`

導入後は**bundle install**を実行する

続いてapplication.cssをapplication

元記事を表示

OTHERカテゴリの最新記事