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

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

CircleCIで【Rerun job with SSH】が弾かれたときの対処法

# なにこれ
CircleCIでRerun job with SSHをしてコンテナにSSH接続した時にコケた時の対処法です。
前にも同じエラーでコケた記憶があるので、備忘録。

# 前提条件
CircleCIでSSH認証済み
capistranoを使ったデプロイができる(自分の場合)

# 結論
githubにローカルのSSH認証鍵を追加していませんでした。以上

# 過程
circleCIで自動デプロイはできている。
でも、【Rerun job with SSH】すると`Permission denied (publickey)`と言われる。

困ったので[公式のガイド](https://circleci.com/docs/ja/2.0/ssh-access-jobs/)を見ました。

#
“`
GitHub または Bitbucket での認証確認
想定どおりにキーが設定されているかどうかは、コマンド 1つでテストできます。 GitHub の場合は、以下を実行します。

$ ssh git@github.com
“`
ローカルで`ssh git@github.com`を叩くと以

元記事を表示

CircleCI【Errno::ETIMEDOUT: Connection timed out – connect(2) for IPアドレス】の解決法

# なにこれ
CircleCIでcapistranoを使った自動デプロイで、
`Errno::ETIMEDOUT: Connection timed out – connect(2) for IPアドレス`
というエラーにハマりかけたので、対処法を残しておきます。

# 前提条件
CircleCIにSSH認証済み

# 結論
AWSのセキュリティグループのインバウンドルールを編集で、
タイプ【SSH】のソースをカスタムで【0.0.0.0/0】にする。以上

# エラー文
#
“`CircleCI.
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as ********@13.114.24.148: Net::SSH::ConnectionTimeout

Caused by:
Net::SSH::ConnectionTimeout: Net::SSH::ConnectionTimeout

Caused by:
Errno::ETIMEDOUT: Connection timed out –

元記事を表示

ActiveRecordを使うときは頭にSQLを描こう

みなさん、ActiveRecordを使う時に頭にSQLが浮かんでいますか?

ActiveRecordはとても便利でSQLを意識することなくDBにアクセスしてデータを取得したり、更新したりすることができます。
そのためついつい実装時にSQLを意識せずに書いてしまうことがあります。

実装時はActiveRecordを使うことで素のSQLを意識しなくてもよいのですが、最終的に実行する時にはSQLが実行されています。
そのため実際に発行されるSQLをみると、こんなSQL発行されるのと驚くことがあります。

SQLを思い浮かべながら書いていたら回避できる実装例をいくつか挙げてみます。

# 無駄なテーブルをJOINしている

下記のようなモデルがあったとします。

“`ruby
def User < ApplicationRecord has_many :user_organizations end def UserOrganization < ApplicationRecord belongs_to :user belongs_to :organization end d

元記事を表示

chat appの自動更新機能実装

#機能の実装手順
1. 何秒かおきに、JavaScriptを使ってブラウザに表示されているメッセージのうち最も新しいもののidをリクエストとして送る
2. Railsのコントローラのアクションにてデータベースに保存されている最新のメッセージのidと①のidを比較し、①のidよりも大きいidを持つメッセージたちをレスポンスする
3. JavaScriptを使って、レスポンスに含まれるメッセージたちをメッセージ一覧の最後に追加する

#1.表示されているメッセージのidが確認できるようにする
– メッセージのidをカスタムデータ属性として追加する

“`haml:_message.html.haml
.message{data: {message: {id: message.id}}}
.message-top
.message-top__sender
= message.user.name
.message-top__date
= message.created_at.strftime(“%Y/%m/%d %H:%M”)
.message

元記事を表示

[Rails]Ransackでセレクトボックスを使用する方法

# はじめに
Ransackで、セレクトボックスを使用する方法についてまとめていきます。

# selectについて
まずは、セレクトボックスを作るための`select`ヘルパーについて、説明をしていきます。

#### 基本型

“`erb
select(オブジェクト, プロパティ名, 要素情報, オプション, 要素属性)
“`

#### 実装例
“`erb
<%= f.select :name, [['sample1', 1], ['sample2', 2], ['sample3', 3]], {include_blank: '選択なし'}, class: 'sample' %>
“`

(form_forの中に入っているとして、オブジェクトは入れていません。)
このように、第三引数に配列を入れると、パラメータとして`valueの1や2が送信されます`。

# 便利なヘルパー
さらにセレクトボックスをカスタマイズしていくための`便利なヘルパー`があります。

### options_for_select
`セレクトボックスの初期値`を設定したいときは`options_

元記事を表示

[rspec] 特定のテストのみ実行する方法

##前提

“ruby 2.6.3“
“Rails 6.0.3.1“
“rspec-rails (3.9.1)“

***

“system spec“のテストを書いていると、テストを走らせてから実行にかなり時間がかかりますよね。

個々のテストは、テスト作成時にピンポイントで行い、全てのテストが全てパスしているかは、リモートリポジトリに“push“した時に“circle CI“に任せるような、割り振りにしたいと考えました。

てな感じで、個々のテストをピンポイントで走らせたい場合について調べました。

##特定の“ファイル“のみテストを走らせる

“`ruby

#bundle exec rspec spec/パスを指定する
bundle exec rspec spec/system/users_spec.rb
“`

##特定の“行“のみテストを走らせる

“`ruby

#bundle exec rspec spec/パスを指定後に、行数を指定する
bundle exec rspec spec/system/users_spec

元記事を表示

Railsのnokogiriでスクレイピングしてactiverecord-importで配列をDBに保存する

# スクレイピングしてDBに保存したい人向けです
外部からデータ取ってくることに憧れてたので、初めてスクレイピングやった忘備録です。
初めてスクレイピングしたのでおてやわらかにお願いします笑

# 何をスクレイピングしたの?
[paypayのキャンペーンwebページ](https://paypay.ne.jp/notice/20200604/01/)から店舗名を取得しました!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314481/9df6c72a-b76a-3bac-2a26-9826b2fc69f9.png)

# スクレイピング前のDB
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314481/79615757-a8da-4e0d-386b-bc7460054dbc.png)

# スクレイピング後のDB
![image.png](https://qiita-image-st

元記事を表示

has_and_belongs_to_manyメソッドを使用してモデルを関連付けする

has_and_belongs_to_manyメソッドを使って多対多のモデルの関連付けからレコードを作成するまでの手順を書いていきます。

記事執筆時のRailsとRubyのバージョンは以下のとおりです。

“`bash
$ rails -v
Rails 6.0.3.1
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]
“`

## has_and_belongs_to_many関連付け
has_and_belongs_to_many関連付けでは、多対多のモデルをつなぐ中間テーブルを作成します。has_many :through関連付けのように中間モデルは作成しません。

モデルの関連付けのイメージ図(Railsガイドから引用)
[Active Record の関連付け – Railsガイド](https://railsguides.jp/association_basics.html#has-and-belongs-to-many%E9%96%A2%E9%80%A3%E4%BB%98

元記事を表示

Docker + Rails で Bundler v2.X を使う

Gemfile.lock の `BUNDLED WITH` と Docker イメージ内の bundler バージョンに乖離があるとエラーになる。

https://qiita.com/tanakaworld/items/e15ff9dbdd4b628378c2

次の通り対策ができる。

1. イメージ内の gem をアップデート `gem update –system`
1. 任意のバージョンの bundler をインストール `gem install bundler -v <バージョン>`

例:

“`docker:Dockerfile
FROM ruby:2.6.2

ENV APP_HOME /app
WORKDIR $APP_HOME

COPY Gemfile $APP_HOME/Gemfile
COPY Gemfile.lock $APP_HOME/Gemfile.lock

ENV BUNDLER_VERSION 2.1.0
RUN gem update –system \
&& gem install bundler -v $BUNDLER_VE

元記事を表示

ほとんど意味のないコピペ記事はどこから来ているのか

active_hash に関する記事は少ない。

で知って少し調べてみた。

Qiita では
https://qiita.com/haruya_hamasaki/items/3cd0b780fb1f076a9bb8
https://qiita.com/Toman1223/items/8633142312bfa886d50b
という記事が見つかったが、ほとんど追加の内容がない。

`self.data` のインデントは同じ…。まぁ、同じデータを機械整形したら、同じになる気もする。

このような記事を投稿するインセンティブは誰にどのようにあるのだろうか…。

質(しつ)が悪く、質(たち)が悪い記事は、大抵参考文献とかは書いていない。先人から学び、自分も何かを残すという、根本がなっていない。

`[2] pry(main)` と数字が入るのと `pry(main)` を併用しているのって、どこかで自分が書いた部分とコピペが混じっているからではないかと勘繰ってしま

元記事を表示

master failed to start, check stderr log for detailsの解決法

# なにこれ
筆者がcapistranoでデプロイをするときに、
「master failed to start, check stderr log for details」
のエラーに7時間悩まされた話
#
“`
01:57 unicorn:start
01 $HOME/.rbenv/bin/rbenv exec bundle exec unicorn -c /var/www/MyNo…
01 master failed to start, check stderr log for details
“`

# 結論
自分の場合はかなり特例だと思います。
credentials.yml.encに以下の内容を追加したら解決しました。
#
“`ターミナル.
EDITOR=’vim –wait’ rails credentials:edit
“`
#
“`credentials.yml
aws:
AWS_ACCESS_KEY_ID: AKIAXK2VAZPGFVRBDTPV
AWS_SECRET_ACCESS_KEY: RI57Z2J4vrcLq8

元記事を表示

【devise】rails メモ 基本設定 初期設定

##【ゴール】
devise 初期、基本設定まとめ
意外と、ごちゃっとなってしまうので、、、

##【メリット】
■ 作業効率UP
■ devise理解度向上

##【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

##【コマンド】
####deviseを初期化
“`
$ rails g devise:install

※エラーが出れば、
$ bundle exec spring stop
“`

####modelを作成
“`
$ rails g devise:アプリ名
“`
####各viewを作成
“`
$ rails g devise views アプリ名
“`

####各controller作成
“`
$ rails g controllers devise:アプリ名
“`

####メール承認機能作成の場合
※Confirmableのコメントアウト外す

“`db/migrate/devise_creat_アプリ名.rb
##

元記事を表示

【Vue Rails】Vue + Railsで”Hello Vue!”表示 

#Vue + Railsアプリ作成

####◆ Railsアプリ作成
“`
// “-webpack=vue”オプションでVue.js使用可能
$ rails new <アプリケーション名> -webpack=vue
“`

#### ◆ model作成
“`
// カラム名:name データ型:text
$ rails g model sample name:text
“`

####◆ migrationファイル編集(Hello.Vue!表示には不要)
“`db/migrate/20200627045139_create_sample.rb
class CreateSample < ActiveRecord::Migration[6.0] def change create_table :sample do |t| t.text :name, null: false, default: "" end end end ``` ####◆ マイグレーション ``` $ rails db:create //データベース作成 $

元記事を表示

【Rails】フリマアプリ商品編集機能について(プレビュー編集・DB更新)

# はじめに
草野と申します。
今回の投稿は、プログラミングスクールでチーム開発にて行ったフリーマーケット系ECサイトのクローンアプリ商品編集機能についてです。自分用のメモのため、文章は拙いですが、少しでも初学者の助けになればと考えています。
内容は、表題にもあるとおり、プレビュー編集とDB更新についてです。未熟な点も多いと思います。不備等ありましたらご指摘ください。随時改善して行こうと思います。ちなみに私は、スクール自体は卒業しており、学習した内容の振り返りとして投稿させて頂いております。

# 完成品
#### 商品編集画面(プレビュー画像部)
[![Image from Gyazo](https://i.gyazo.com/2122cd8f3dcd78a474e2a0692aab41f4.gif)](https://gyazo.com/2122cd8f3dcd78a474e2a0692aab41f4)
#### 商品編集画面(カテゴリー部)
[![Image from Gyazo](https://i.gyazo.com/ad8f6257f48af707a31e7047a41fa

元記事を表示

chat app.にてユーザー検索後、グループ追加を実装

#はじめに・目的
– chat app.にてユーザー検索後、グループ追加を実装
– ユーザー検索をインクリメンタルサーチ
– サーチ後、追加ボタンでグループ追加。
– 削除ボタンでメンバー削除
– gif

#インクリメンタルサーチ実装
##1.API側準備
– routing

“`ruby:routes.rb
resources :users, only: [:index]
“`
– users_controller.rbにindex定義

“`users_controllers.rb
class UsersController < ApplicationController def index respond_to do |format| format.html format.json end end ``` - app/views/usersディレクトリにindex.json.jbuilderファイルを作成 `

元記事を表示

【Rails Webpacker】Webpacker::MissingEntryErrorのエラーはNode.jsのバージョンに起因するかもしれない話

# 【Rails Webpacker】Webpacker::MissingEntryErrorのエラーはNode.jsのバージョンに起因するかもしれない話

## 結論から
Nodeのバージョンを13.7以上にしてあげると
app>public>packsが生成され、当該エラーが解決される

## 解決までのプロセス
普通に“rails new appname“でアプリを作成して
コントローラーやモデルの作成を行った後に、ブラウザでアプリをみてみると
このようなエラーが出る時がある。
スクリーンショット 2020-06-27 18.50.26.png

多数のサイトを見て、以下のコマンドを打ってみてもうまくいかない。

“`termial:terminal
yarn
yarn install
yarn upg

元記事を表示

Rails のデータを React から参照するアプリケーション作成 ( Rails + React + MySQL )

# はじめに
他の方の記事を参考に自分なりに Rails + React + MySQL の環境を作ってみたので、その時のやり方をまとめました。
上からコピペするだけで動くようにまとめてみたので、はじめてだけどやってみたいという方がいらっしゃれば、試していただきたいです。

# コマンド

こちらの項目で実施することは以下となります。
上から順番にターミナルで実行していただければと思います。

* やること
* rails アプリケーションの作成
* webpacker インストール
* react インストール
* MVC作成
* migration

“`
$ rails _5.2.4.2_ new react_sample_app –webpack=react -d mysql

$ cd react_sample_app

# Webpackを有効にする
$ rails webpacker:install

# Reactを有効にする
$ rails webpacker:install:react

# sample モデルを sca

元記事を表示

Rails+vue+Parcel環境でSFCのスタイルが効かなかった件

# 単一コンポーネントで定義したスタイルが反映されない件
Rails+vue+Parcel環境で開発をやっていた時vueのSFCで書いたスタイルが適用されない
いろいろ調べても記事はあまりなかった。
コードをしっかり確認したら解決したのでまとめてみました。

## 解決法
CSSを読み込むヘルパーメソッドを自作する

“`ruby:app/helpers/application_helper.rb
module ApplicationHelper
・・・

def javascript_pack_tag(name)
javascript_include_tag(manifest[“#{name}.js”])
end

+ def stylesheet_pack_tag(name)
+ stylesheet_link_tag(manifest[“#{name}.vue”])
+ end

・・・
“`
あとは読み込みたいスタイルがあるvueファイルを下記のように指定するだけ。

“`ruby:app

元記事を表示

deviseのルーティングをカスタマイズする

## はじめに
deviseは自動的にもろもろの設定を追加してくれる便利なGemですが、ルーティングをスタマイズすることになって苦戦したので、調べたことをまとめます。

deviseはさまざまなコントローラがありますが、基本的なDevise::RegistrationsControlleコントローラーとそのルーティングに絞ってをみていきます。

## カスタマイズしない場合
デフォルトのルーティングはこの様になっています。

“`config/routes.rb
Rails.application.routes.draw do
devise_for :customers, path: ‘auth’
end
“`

“`
$ rails routes | grep registrations
cancel_customer_registration GET /customers/cancel(.:format) devise/registrations#cancel
new_customer_registration GET /customers/sign_

元記事を表示

Rails Tutorial 第5章完了

#2020/6/16 1時間
夕食後にやったのですが、途中で寝てしまいました。
ほとんど進まなかったです。
仕事をした後の疲れた脳では辛いです。

#2020/6/17 0.5時間
夜は無理だと思い、朝やることにしました。
仕事の前の30分だけしか時間がとれませんが、脳はフレッシュなので、夜より進みました。

#2020/6/18 0.5時間
やる時間を夜から朝に変えてから、続けてできるようになりました。

#2020/6/19 0.5時間
5.1.2まで終わりました。朝の30分です。

#2020/6/20 2時間
会社がない土曜なので、大分進められました。5.2まで終わりました。

#2020/6/21 1.5時間
会社がない日曜で、5.3まで終わりました。

#2020/6/22 0.5時間
仕事の前の朝30分で、5.4まで終わりました。

#2020/6/23 0.5時間
仕事の前の朝30分で、5章を終わりました。

これで5章を完了しました。
所要時間は7時間です。

感想ですが、仕事を終わった夜にやるのは脳が疲れていて寝てしまって無理だったので、朝に変えたのが効果がありまし

元記事を表示

OTHERカテゴリの最新記事