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

Rails関連のことを調べてみた2021年12月06日
目次

ゲストハウス支配人からエンジニアになってみて

####はじめに
ゲストハウススタッフからエンジニアになってみて、というテーマでお話しさせていただきます。

####前職について
エンジニア転職する前は、都内のゲストハウスの支配人として勤務をしておりました。
ゲストハウスとはドミトリーと呼ばれる相部屋の部屋がメインの宿泊施設です。
宿泊代がホテルに比べると安く、また1階がカフェ・バーになっており初めてのお客様同士でも話しやすい雰囲気のため、世界中から来る宿泊客で賑わっていました。…コロナ前までは(苦笑)。

####エンジニアになろうと思ったきっかけ
元々私は文系の大学出身でしたし、エンジニアになるなんて微塵も考えたことはありませんでした。
しかしゲストハウスの運営をしていると、パソコンひとつ持って世界中を旅しながら仕事をしている人に出会うことも多く、彼らの話を聞いていると大抵エンジニアだったりデザイナーとして働いているとのことでした。ただそれでも羨ましいと思いつつも自分には出来ないことだと思っていました。

少し話は飛びますが、長年勤めているとトラブルや施設の故障などに度々出くわします。
私の勤めていたゲストハウスは大手でもな

元記事を表示

既存のrailsにvueを取り込んで、自作vueファイル(コンポーネント作成)

“`

bundle exec rails webpacker:install:vue
“`

を実行

<%= javascript_pack_tag 'hello_vue' %>
<%= stylesheet_pack_tag 'hello_vue' %>
をかいたらhello_vueが表示された

# 次は自作コンポーネントを表示してみる

“`apps/javascript/packs/components/mindmaps.vue

“`

“`js/packs/mindmaps.js

import Vue from ‘vue’
import mindmaps from ‘../packs/components/mindmaps.vue’

document.addEventListener(‘DOMContentLoaded’, () => {
var app = new Vue({
el: ‘#mindmaps’,
components: {

元記事を表示

[初心者] Railsでyoutube APIを使って検索機能を実装してみた

##はじめに

ポートフォリオ作成をするにあたりyoutube APIを使い、検索機能を追加したく、実装してみました。
不慣れで読みにくいかもしれませんが何卒ご了承ください。

YouTube APIは取得しているものとします。

主にこちらの記事を参考にしています。
[Railsでyoutube APIを使ってみた](https://qiita.com/sakakinn/items/46c0d4945e4646f346f6)
大変お世話になりました?‍♂️

##開発環境

Rails:6.1.4
Visual Studio Code:1.61.2

##実装してみる

“`ruby:youtube.controller
class YoutubeController < ApplicationController GOOGLE_API_KEY = ENV["API_KEY"] def find_videos(keyword, after: 1.months.ago, before: Time.now) service = Google::Apis::Youtu

元記事を表示

【Rails×AWS】yamlファイルにおける’please note that yaml must be consistently indented using spaces’の解決

https://qiita.com/gyu_outputs/items/b123ef229842d857ff39
こちらの記事を参考にrailsアプリをawsにデプロイする過程で発生したエラーに関する備忘録です。

#エラー詳細

ページトップに添付した記事の中の「credentials.ymlの設定」の箇所で直面したエラーです。

“`credentials.yml
db:
database: アプリ名
username: root
password: 設定したPW
socket: /var/lib/mysql/mysql.sock

“`

credentials.ymlを記述した後に、

“`database.yml
production:
<<: *default database: <%= Rails.application.credentials.db[:database] %>
username: <%= Rails.application.credentials.db[:username] %>
password: <%= Rail

元記事を表示

【Rails】環境構築

ターミナルの設定を弄っていたら、今まで入れていたバージョンがどこかに行ってしまったので、再度環境構築する羽目になりました。環境構築は面倒なので今のうちにメモを。

###状態確認
“`
実行したコマンド
・ruby -v
・rbenv -v
・which ruby → /usr/bin/ruby
“`
状況確認のため上記のコマンドを実行し、結果を見て見ると
-v コマンドで確認したものは問題無くバージョンが表示されていたが
“`which ruby → /usr/bin/ruby“`
“`which ruby“`の結果、パスが間違っているのでここを修正できると判断。

“`
❌ which ruby → /usr/bin/ruby
⭕️ which ruby → /Users/user/.rbenv/shims/ruby
“`

###パスとは
ファイルやフォルダの置いてある場所のこと。
・パス = PC内の住所
・パスを通す = パスを省略できるようにする

###設定を変える
rubyの住所を変えるために、.zshrcにて変更を加える必要がある。
>.zshrcとは

元記事を表示

【Heroku】 ActionView::Template::Error (Webpacker can’t find application.js in /ideaFrameworks/public/packs/manifest.json. Possible causes:

Rendered layout layouts/application.html.erb (Duration: 1.8ms | Allocations: 983)
2021-12-05T07:57:51.553760+00:00 app[web.1]: I, [2021-12-05T07:57:51.553723 #5] INFO — : [7101643d-e3f6-44fc-8f81-5b4e42542e97] Completed 500 Internal Server Error in 45ms (ActiveRecord: 5.6ms | Allocations: 2446)
2021-12-05T07:57:51.554362+00:00 app[web.1]: F, [2021-12-05T07:57:51.554328 #5] FATAL — : [7101643d-e3f6-44fc-8f81-5b4e42542e97]
2021-12-05T07:57:51.554363+00:00 app[web.1]: [7101643d-e3f6-44fc-8f81-5

元記事を表示

【Rails】ArgumentError (SMTP To address may not be blank: []):の対処法【Mailer】

症状

RailsのActionMailerで送信先のメールアドレスを変更しようとした時に、下記エラーメッセージが表示されました。
翻訳すると、「ArgumentError(SMTP宛先アドレスを空白にすることはできません:[]):」でした。

“`terminal:error
[ActiveJob] [ActionMailer::MailDeliveryJob] [7112b19a-912c-49a9-b0ed-d7a83176ab57] Error performing ActionMailer::MailDeliveryJob (Job ID: 7112b19a-912c-49a9-b0ed-d7a83176ab57) from Async(mailers) in 1377.91ms: ArgumentError (SMTP To address may not be blank: []):
C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params

元記事を表示

herokuへのコンテナデプロイでのエラー ActiveSupport::MessageEncryptor::InvalidMessage:

https://www.youtube.com/watch?v=uQf9968RWWo&t=2194s

我らが山浦清透大先生のこの動画の通りに,herokuへのコンテナデプロイをしようとしてます。

“`
heroku run bundle exec rake db:migrate RAILS_ENV=production -a ideaframeworks

“`

を実行したら

ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage

このようなエラーがでてきた。

secret_key_base
config/master.key
config/credentials.yml.enc
暗号化/複合化。
なんか聞いたことある。

https://hirocorpblog.com/rails-credentials-master/

>端的にcredentials.yml.encの文字列とmaster.keyの文字列の組み合わせが不正解

元記事を表示

Railsコマンドメモ

勉強内容をメモしたものです

# 基本スクリプト
| 説明 | コマンド内容|
|:–|:—|
| アプリ作成 | rails new [アプリケーション名]
| コントローラ作成|raild g controller [コントローラ名]
| モデル作成| rails g model [モデル名]
| モデル削除| rails d model [モデル名]
| マイグレーションファイルの作成 | rails g migration [行う処理+テーブル名]

# アクション

|アクション| REST
|–|–|
|index| GET model名
|new | GET model/new
|show| GET model/:id
|edit| GET model/:id/edit
|create| POST model
|update| PUT model/:id
|destroy| DELETE model/:id

# Model

“`
rails g model [model名]
“`

## データ型
| 型名 | |
|:–|–|
|string |

元記事を表示

rails二重投稿防止の注意点

## 事象

* railsではformで送信時にvalidateなどのメッセージを出せるが、
* そのvalidateメッセージ表示周りがdivで囲まれ
* レイアウトが崩れる場合がある

## 対策
* もしview周りはデザイナーが担当しており
* cssの指定が `.class > p + span` などのように **子、隣接結合子**などを使って書かれている場合
* デザイナーに**BEM記法**などで書き直してもらう必要がある

## よくあるその場しのぎ

* レイアウトが崩れるので、validate周りをdivで囲まないようにする為、configに以下を書いている場合

“`ruby
# 二重送信対策解除
config.action_view.automatically_disable_submit_tag = false
“`

* もちろんこれだと二重送信防止が解除される為解決にならない

* [二重送信防止方法はこちら](https://rails.densan-labs.net/form/double_submit_protection.html)

元記事を表示

gemを使ってスクレイピングしてみた

# はじめに
本記事は、[2021 RUNTEQアドベントカレンダー](https://qiita.com/advent-calendar/2021/runteq)5日目の記事になります!
現在ポートフォリオを作成しており、その作成過程でスクレイピングを用いて必要な情報を取得しDBに格納しました。今回はそこで使用した**gem Mechanize**について書いていこうと思います!

# この記事でわかること

**gem Mechanizeについて**

– できること
– 提供しているメソッド
– PFで用いたDBに格納する方法

##できること

まず概要を[公式](https://github.com/sparklemotion/mechanize)より見てみます

> Mechanizeライブラリは、ウェブサイトとの対話を自動化するために使用されます。Mechanizeは、自動的にクッキーを保存、送信し、リダイレクトを行い、リンクをたどり、フォームを送信することができます。フォームフィールドは入力して送信することができます。また、

元記事を表示

【Rails】newメソッドとbuildメソッドの使い分け方【初学者の疑問点を簡潔に解説】

## はじめに
 本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
 そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
 間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。

## 今回の疑問点
 今回の疑問点は、

  _`new`と`build`の使い分け_
 
 です。 

 以前、フォロー/フォロワー機能の実装の際に出てきて`newメソッド`との使い分けについて疑問を抱きました。
 今回、調べて見てわかったことをまとめます。
## 疑問点についての解説

###結論
 インスタンスを生成するメソッドという点では共通しているが、モデルの関連付けの際には`build`を使用する。

###buildメソッドの記述方法
 モデルの関連付けの際に使用すると記載しましたが、アソシエーションの状況によって記述の仕方が異なるようです。

####アソシエーションが1対1の場合

“`
@user = User.new
@card = @user.build_

元記事を表示

NoMethodError: undefined method `<<' for #

# 前提

![mandal-art-06.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653881/41007dc7-7cb4-2559-8997-87969c1adbbf.jpeg)

マンダラートのアプリを作っています。
マンダラートとはアイデア出しの手法の一つで
こんな感じで、連想してアイデアを出してくような感じ。

# エラーが起きた

“`ruby

class MandalartsController < ApplicationController def index # 最初から配列の要素を9つ入れとく # 配列の要素の中身があれば、何もしない # 配列の要素の中身があれば、""の要素を入れとく @mandalarts = Mandalart.all binding.pry if @mandalarts.count < $mandalart_blocks_num ($mandalart_blocks_num

元記事を表示

Rails 掲示板の編集、削除機能の実装 解説

#コントローラーに編集と削除を追加
###ルーティングの設定

“`rb:config/routes.rb
Rails.application.routes.draw do
root ‘static_pages#top’

get ‘login’, to: ‘user_sessions#new’
post ‘login’, to: ‘user_sessions#create’
delete ‘logout’, to: ‘user_sessions#destroy’

resources :users, only: %i[new create]
resources :boards do
resources :comments, only: %i[create], shallow: true
end
end
“`
・前回はonly: %i[index new create show] で、4つ指定したいたが今回は「destroy」「edit」「update」を加えるのでonlyで範囲を指定をしない。

###boardコントローラーの設定

“`r

元記事を表示

【オブジェクト指向】ポリモーフィズム

##ポリモーフィズムとは
意味:多相性、多態性

プログラミング言語の持つ性質の一つで、ある関数やメソッドなどが、引数や返り値の数やデータ型などの異なる複数の実装を持ち、呼び出し時に使い分けるようにできること。
**多態性の概念がない言語では、同名のプログラムが二重に定義されていますとエラーが出てくる。**

https://e-words.jp/w/%E3%83%9D%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%95%E3%82%A3%E3%82%BA%E3%83%A0.html

– dogもcatも同じcryメソッドを呼び出しているが、呼び出し先に応じて適切なメソッドを実行している。

“`ruby
class Animal
attr_accessor :name

def cry(voice=”)
“#{self.name}: #{voice}”
end
end

class Dog < Animal def cry(voice='わんわん') super end end class Cat < Animal

元記事を表示

bootsnapの「wrong argument type false (expected Symbol) (TypeError)」エラーで「bundle exec」コマンドが使えない場合の対処法

## 背景

自分は普段、Github Actions で CI/CD 環境を作る事が多いのですが、つい先日、新たなコミットを push してビルドおよびテストを実行した結果、なぜか途中でコケるようになってしまいました。

具体的に言うと、「bundle exec」コマンドを使おうとするタイミングで

`to_binary’: wrong argument type false (expected Symbol) (TypeError)`

エラーが発生するようになってしまった感じです。

“`
▶︎ Run bundle exec rails db:create
bundle exec rails db:create
bundle exec rails db:migrate
shell: sh -e {0}
/__w/myapp/vendor/bundle/ruby/3.0.0/gems/bootsnap-1.9.1/lib/bootsnap/compile_cache/iseq.rb:13:in `to_binary’: wrong argument type fal

元記事を表示

【Rails】TimeWithZoneクラスとは

##TimeWithZoneクラス
– Rails独自のクラスで、Timeクラスと完全な互換性がある。ただし、実装としてはTimeクラスを継承して作られているわけではない。(親クラスはObject)
– Timeクラスよりもタイムゾーンを柔軟に扱うことができる。
– TimeWithZoneクラスのインスタンスはnewではなく、以下のような方法で取得するのが望ましい。

“`ruby
Time.zone = ‘Eastern Time (US & Canada)’ # => ‘Eastern Time (US & Canada)’
Time.zone.local(2007, 2, 10, 15, 30, 45) # => Sat, 10 Feb 2007 15:30:45.000000000 EST -05:00
Time.zone.parse(‘2007-02-10 15:30:45’) # => Sat, 10 Feb 2007 15:30:45.000000000 EST -05:00
Time.zone.at(1171139445

元記事を表示

[Rails]DELETEリンクでpreventDefaultが効かない

### 環境
ruby 2.6.5
Rails 6.0.4.1
[sweetalert2](https://sweetalert2.github.io/#configuration)(CDN)

### 実装したい機能
削除ボタンを押すと、ブラウザに警告アラートを出す。
OKを押すと削除され、Cancelを押すと、元の画面に戻る。

イメージ↓
![cation.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257482/64d5c09d-943f-df06-f2e7-fbffaad5208e.png)

### 実装方法
削除リンク要素をgetElementByIdで取得。
クリックイベント内でpreventDefaultを使用し、削除イベントを中止。
sweetalert2を使用して、警告アラートを表示。
OKが押された場合のみ、削除処理を進める。

### 生じた問題
Railsのヘルパーメソッドであるlink_toで削除リンクを実装した場合、
JavascriptのpreventDefaul

元記事を表示

rakeとシェルスクリプトを使って、複数DBへのデータインポートを効率化する

初めまして、kouです!
いつもは社内アカウントでqiitaを書いているのですが、今回は気分転換に個人アカウントで記事を書いていきたいと思います!

## 座学編

### rakeとは?
rubyで使用されるタスクランナーの一種。
実行したい処理をrubyで書いてタスクとして登録し、登録したタスクをrakeコマンドで実行する。
→ 一旦rakeタスクに登録しておけば、コマンドを入力するだけで処理を実行してくれるのでかなり便利!

### シェルスクリプトとは?
> シェルスクリプトとは、シェルによって解釈・実行される一連の処理を記述したスクリプト。狭義では、Unixシェルで用いられるスクリプト言語を指します。
「スクリプト(script)」は「台本」という意味で、コンピュータに実行させたい処理を記述してコンピュータを動かせます。
この台本をテキストデータで用意したものがシェルスクリプトです。コマンド・インタプリタとも呼ばれています。
ref: https://udemy.benesse.co.jp/development/system/shellscript.html

→ エクセル

元記事を表示

Rails 掲示板詳細画面の追加/コメント機能の実装 解説

Rails 掲示板詳細画面の追加/コメント機能の実装 手順 (自分用)

#コメントモデルを作成する

“`rb:ターミナル
$ bundle exec rails generate model comment body:text user:references board:references
“`
・UserモデルとBordモデルを参照するようにCommentモデルを作る。

###マイグレーションファイル

“`rb:db/migrate/XXXXXXXXXXXXXX_create_comments.rb
class CreateComments < ActiveRecord::Migration[5.2] def change create_table :comments do |t| t.text :body, null: false #空にならないようにnull制約をfalseにする t.references :user, foreign_key: true t.references :board, foreign_ke

元記事を表示

OTHERカテゴリの最新記事