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

Rails関連のことを調べてみた2020年03月31日
目次

あなたの日本語をRails語に翻訳する辞書 データベース編

#はじめに
TECH CAMPというプログラミング教室に40日ほど通った添野です。
本日はRailsで重要な概念「**データベース**」という概念を説明していきます。

皆さんはRailsにおける「**データベース**」が何なのか説明できるでしょうか?
この記事を読めば、**かなり具体的**に説明できるようになります。

※MySQLの使用を前提に記事を書いています

#結論
データベースとは「**配列に入った配列に入ったハッシュ**」です。
わかりやすく説明するため、**徐々に進化**させて説明していきます。

**値**
雑魚敵。ドラクエでいう「スライム」です。
最終的に**ビューで表示したい**のはこいつです。

“`
りんご
“`

**配列**
雑魚敵の集合体です。ドラクエでいう「キングスライム」です。

“`
[りんご , ゴリラ , ラッパ]

簡略化すると:
[A,B,C]
“`

**配列に入った配列**
キングスライムの集合体です。キングスライムって進化すんの・・・?
Rubyというゲームの場合は無限に進化します。

“`
[ [りんご ,

元記事を表示

VS codeの初期設定とRuby on Railsの環境設定

初期設定につまづくとかなり時間をロスするので、まとめることにしました
# VSCodeの初期設定
## VSCode(Visual Studio Code)をインストール
1. [VSCodeダウンロードページを開く](https://code.visualstudio.com/)
![スクリーンショット 2020-03-31 5.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455403/676793f7-9452-c1e2-879b-3cbe7ea9c825.png)
2. Download for Macをクリックして、ダウンロードを完了します

## VS Codeに拡張機能を追加

### 追加する拡張機能

– Japanese Language Pack for Visual Studio Code →日本語表記にします。

![スクリーンショット 2020-03-31 5.56.45.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

[devise]現在ログインしているユーザ名が表示されない場合の解決策

#環境
| |バージョン|
|:—————-:|:—————–:|
|ruby |2.6.5|
|rails |5.2.4.2|
|devise |4.7.1|

# 目標
現在ログインしているユーザの名前を表示させたい。

# 問題
[@yasuno0327](https://qiita.com/yasuno0327)氏が公開していた[devise にusername カラムを追加し、usernameを登録できるようにする。](https://qiita.com/yasuno0327/items/ff17ddb6a4167fc6b471)を参考にして実装したところ以下のようなエラーを吐いた。

“`:Error
undefined method `username’ for nil:NilClass

(意訳)
NilClassのnilオブジェクトに`username`メソッドは定義されてないよ
“`
# 解決策
“`:_current_username.html.erb
<% if us

元記事を表示

【Rails】連動しないwill_paginateの設定

“`static_pages_controller.rb
:
@myfeed_items = current_user.myfeed.paginate(page: params[:page], per_page: 3)
@followingfeed_items = current_user.followingfeed.paginate(page: params[:page], per_page: 3)
:
“`
上記のように同様のファイルに`will_paginate`の設定がされているときに、両方とも連動してページが動いてしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/e754d16a-839d-f480-1af6-293c3824be85.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597913/108f17af-1101-3dbc-14

元記事を表示

Typeformのかっこいい入力フォームを自作アプリに実装した話

# 概要
非エンジニアビジネス職(カスタマーサクセス職)の[@yuta_maruyama](https://twitter.com/yuta_maruyama)が、動的でイケてるかっこよい入力フォームを自力で作ろうと思ったけれど難易度が高すぎたので米国産SaaSのTypeformを組み込んでWebhookで連携しようとした話です。
ちなみにカスタマーサクセスの話は一切なく、大好きなクラフトビールのテイスティングノートアプリを作ろうとしている中での話。

## 環境
– Ruby 2.6.2
– Rails 6.0
– heroku

## 作ろうとしているもの
[BEER BASH](https://beerbash.herokuapp.com/)

– ビールのテイスティングノートアプリ
– 飲んだビールに関する評価やコメントをnoteとして残す
– Rails練習用なので見てくれは勘弁
– 「ノートを残す煩わしさ」がないことをサービスのユニークな価値にしたかったのでそこにはこだわりたい

## [Typeform](https://www.typeform.com/)とは
– フォ

元記事を表示

Docker環境でRailsアプリにvue.jsを導入する

## 目的
railsアプリにvue.jsを導入するために、練習もかねてサンプルのアプリにvueを導入してみたいと思う。

## サンプルアプリのディレクトリ作成
任意のワークスペースでディレクトリを作成します。

“`erb:ターミナル
mkdir sample_app
cd sample_app
“`

## Dockerの設定ファイルを作成

“`php:Dockerfile
FROM ruby:2.5.3

RUN curl -sL https://deb.nodesource.com/setup_10.x | bash – && apt-get update && \
apt-get install -y nodejs –no-install-recommends && rm -rf /var/lib/apt/lists/*

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev

RUN apt-get update && apt-get install -y curl

元記事を表示

Dockerのコマンドについて詳しくなろう

## build
buildコマンドはimageを構築するのみ。コンテナ作成はしない。

“`
$ docker-compose build
“`
## up
upコマンドでは、キャッシュがある場合はそれを使って一発でイメージの構築から、コンテナの構築・起動までします。

“`
$ docker-compose up
“`

## start
startコマンドは既存のコンテナを起動します。

“`
$ cocker-compose start
“`

## run
runコマンドはimageの構築から、コンテナの構築・起動までする。引数でサービスを指定する必要あり。

“`
$ docker-compose run web
“`

## exec
コンテナの中に移動できる

“`
$ docker-compose exec web bash
“`

bash ashの違いは、ashの方が軽量なコマンドらしい。

## 新たなrailsプロジェクトを立ち上げるコマンド

“`php:ターミナル
docker-compose run web rails new .

元記事を表示

テスト

これから、Rails tutorialのアウトプットをします。

元記事を表示

autodetect’: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.

masterからサブブランチに切り替えて、

“`
rails s
“`

をしたら、

autodetect’: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.

とエラー分が表示され、Javascriptになにか関係が??初めて見るエラー分で、何かしたかと思っていると、、、、

最近、何かとこのエラーに遭遇する人が多いだとか、、、、、

私の場合は、masterからサブブランチに切り替えたときに起こりましたが、これはタイミングが被っただけではないでしょうか。

解決策としては、gemfileに

“`
gem ‘therubyracer’
gem ‘libv8’
“`

として、bundle installでいけるのかと、思いきやここでエラー分が出たため、node.jsをインストールすることにしました。

一度、上記のgemをインストールできるか試してみてください。

node.jsをhomebr

元記事を表示

renderの処理について

# 本記事を書いた経緯
私はエンジニアになるために、プログラミングスクールにて学習を行なっています。
そこで、renderの処理について学び、備忘録として残したい使い方がありましたので本記事を書くに至りました。

# renderの使い方
下記の[A]と[B]は書き方に違いがあれど、どちらも描画されるビューは全く同じです。
しかしながら、ある理由により、[A][B]いずれかの記述の方が好まれます。より良い記述は[A][B]はどちらでしょうか…?

“`言語:[A]の場合
@users = User.all
@users.each do |user|
= render ‘user’, user: user

“`
“`言語:[B]の場合
@users = User.all
= render ‘user’, users: @users

“`
良い記述は[B]となります。
[B]の方が好まれます。
理由は、[B]の方が処理が速いからです。

[A]では、@usersにeachを使用して、user一人一人に対してrenderを実行しています。
この書き方だと、userが1

元記事を表示

bundle installのエラー解決法(can’t find gem bundler (>= 0.a) with executable bundler)

# エラー内容と状況
エラー内容はタイトルの通り。bundle installしたとき、`can’t find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)`と怒られてしまった。
そもそもこの時はgithubのリモートからpullして、rails sをした時に、`bundle install`してくださ〜いってエラーから始まっています。チーム開発でよくある事象かと思い、自分も何回か直面してその都度調べていたので、そろそろ自分でまとめようと思います!

# 開発環境
– ruby 2.5.1p57
– Rails 5.2.4.1

# bundlerとは
そもそもbundlerとは何だったのかを復習しましょう!
Railsアプリケーションにおいては非常に複雑なgemの管理をする必要があります。これらのgemを管理するのが`bundler`というgemになります。
管理するものが無いのでbundle installできないってことだったのですね。

ターミナルでbundlerをインストールす

元記事を表示

DBから取得したデータの中身を取得する方法 Ruby on Rails

# MySQLからデータを取得してきた
whereメソッドを使って、特定条件下で検索に該当するクエリを発行させると、条件に当てはまったレコード全てを引っ張ってくる。

“`log_in.rb
yesterday_time = Time.now.yesterday
log_in_collection = LogIn.all #LogInというモデルを作成してあり、そこからデータを全て引っこ抜いている
log_in_list = log_in_collection.where(“loged_in_at >= ?”, yesterday_time)
“`

そうすると、log_in_listをpメソッドで出力すると、

“`
#]>
“`

こんな感じのデータが取

元記事を表示

ActiveModelSerialize で has_many の N+1 SQLクエリを防止するために eager_load する例 ( #Rails )

# Controller

“`rb
class UsersController < ActiveController def index # render json: User.eager_load(:includes).all render json: User.eager_load(:books).all end end ``` # Serializer ```rb class UserSerializer < ActiveModel::Serializer attributes :id, :name has_many :books end ``` # NOTE 途中 eager_load / includes が効かないような気がして gem も試したのだが、効かないというのは気のせいだった。 ams_lazy_relationships は Star数は少ないが includes のちょっとした問題点を解決してくれそうなgem? httpリクエスト単位でのキャッシュや、もっと長いキャッシュを実現してくれ

元記事を表示

GitHubから、gemの脆弱性の通知がきたので、バージョンアップをする

# はじめに

**rubyzip**という**gem**で、割と危険度が高い脆弱性があるという主旨の通知メールがGitHubから届いたため、いちいち面倒ではあるが、バージョンアップを行っておく。

# 手順

**Gemfile**の中身に**rubyzip**がないか探すが、どうも、**rubyzip**という**gem**は使っていないようだったため、**Gemfile.lock**の中身を検索する。すると、2ヶ所で検索される。どうも、他のgemの中から、依存関係として利用されている事のようだ。

“`Gemfile.lock
rubyzip (1.2.3)
selenium-webdriver (3.142.4)
childprocess (>= 0.5, < 3.0) rubyzip (~> 1.2, >= 1.2.2)
“`

先に、Ubuntuにインストールされている**rubyzip**のバージョンを確認しておく。

“`cmd
gem list | grep rubyzip
rubyzip (1.3.0, 1.2.4, 1.2.3)

元記事を表示

Ruby on Rails とかで docker 環境なのに #VSCode で ruby-rubocop 拡張を有効にするにはどうすれば良いのか? ( #Rails #Ruby )

# ruby-rubocop

![image](https://user-images.githubusercontent.com/13635059/77843391-db566100-71d7-11ea-8e92-243087a89fde.png)

# エラー

なんかいろいろと言われますけれど。

![image](https://user-images.githubusercontent.com/13635059/77843405-03de5b00-71d8-11ea-9f64-bc8fc0973ad2.png)
![image](https://user-images.githubusercontent.com/13635059/77843418-1789c180-71d8-11ea-9f91-f898b22f598d.png)

# 解決法

local に同じバージョンの ruby + rubocop 関連で必要なgemをインストーするれば動くっぽい

“`
gem install rubocop
gem install rubocop-performance
ge

元記事を表示

rails6のwebpacker.ymlインストールエラー

#エラー内容

“`ruby:実行コマンド
dockder-compose up
“`

“`console
:エラー
Webpacker configuration file not found /app_name/config/webpacker.yml.
Please run rails webpacker:install Error: No such file or directory @ rb_sysopen – /app_name/config/webpacker.yml (RuntimeError)

“`

##意味
webpacker.ymlに設定が見つからない。

##解決
単純にコンテナ内でwebpackerをインストールをしたら解決したました。

“`ruby:実行コマンド
docker-compose run web bundle exec rails webpacker:install
“`

元記事を表示

#Rails #rspec で SQLクエリ発行を標準出力する

`ActiveRecord::Base.logger = Logger.new(STDOUT)` をどこかに書くだけでok

よく使う場合は rails_helper に定義するなり、 before after できれいに処理するなりするする

“`rb
require ‘rails_helper’

RSpec.describe do
before do
ActiveRecord::Base.logger = Logger.new(STDOUT)
end

it do

end
end
“`

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/3054

元記事を表示

初めてのBitbucket

rails チュートリアルを進めるにあたって、bitbucketを一番初めに使用するときにわからないことがあって苦しんだためメモ

・cloud9(aws)環境で実施
・アカウント作成は省略
##公開鍵の作成
“`sh:console
cat ~/.ssh/id_rsa.pub
“`
上記のコマンド入力で公開鍵を所持しているか確認できます。所持していない場合には`No such file or directory`と表示されます。
鍵を所持していない場合は

“`sh:console
cd ~/.ssh #sshフォルダに移動
ssh-keygen -t rsa -C saber@example.com # 自分のメールアドレス入力
“`
Entキー押すと色々と出てくるが特にいじる必要ないのでそのままEntキー何回か押して鍵を作成。鍵を作成した後に先ほどの

“`sh:console
cat ~/.ssh/id_rsa.pub
“`
を実行して鍵を表示させます。
##公開鍵の追加
bitbucketにログイン後、
ユーザーアイコン
  ↓
Bitbucket settin

元記事を表示

#Rails ActiveModelSerializer で has_many に別の名前をつける例 ( Model class にはエイリアスを作らない )

– User#books というメソッドがあるが items という名前でシリアライズしたい
– User に alias を作れば可能だが model を汚したくない
– Serializer に items メソッドを作ってエイリアスする

“`rb
class User < ApplicationRecord has_many :books end class UserSerializer < ActiveModel::Serializer attributes :id, :items has_many :items def items object.books end end ``` - ActiveModel::Serializer 自体のオプション等でも出来るかどうかは不明 # Original by Github issue https://github.com/YumaInaura/YumaInaura/issues/3053

元記事を表示

Railsのコールバッククラス(callback class)について調べたこと

# 狙い

本文は、前人の知見([@joker1007](https://qiita.com/joker1007)の[記事](https://qiita.com/joker1007/items/2a03500017766bdb0234)、[@k5trismegistus](https://qiita.com/k5trismegistus)の[記事](https://qiita.com/k5trismegistus/items/3e7339a602f46e9f9087))踏まえて、コールバッククラスのメリットとデメリットを述べて、さらに実践において、どのような状況で、それを使ったほうが良いのかについて論じてみる。

# 利弊

## メリット

– モデルから、**コールバックの処理**([Railsガイド](https://railsguides.jp/active_record_callbacks.html)では、「Active Recordオブジェクトが作成/保存/更新/削除/検証/データベースからの読み込み、などのイベント発生時に常に実行されるコード」と定義)といった責務を切り離

元記事を表示

OTHERカテゴリの最新記事