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

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

(質問)bundle installを実行するとLibrary not loaded: というエラーが発生する

知識が不十分で数日かけて解決に至りませんでした、迷走してトラブルが悪化していると感じたため質問させていただきます。
質問が初めてのため、回答以外にも不備あればご教示いただけると幸いです。

“`console:エラー内容

Ken@MacBook-Pro (アプリ名) % bundle install
Ignoring bcrypt-3.1.13 because its extensions are not built. Try: gem pristine bcrypt –version 3.1.13
(中略 ※大量に同様のIgnoring~)
Ignoring zlib-1.1.0 because its extensions are not built. Try: gem pristine zlib –version 1.1.0
Traceback (most recent call last):
33: from /Users/Ken/.rbenv/versions/2.5.1/bin/bundle:23:in `


32: fr

元記事を表示

Docker + Rails 6.0

## 背景

プログラミングスクールではよく、OSやバージョンの違いによるエラーにどう対処するかがしばしば問題となります。この対応にメンターの時間やリソースを多く費やしてしまうと、肝心のプロダクトの作り込みに時間を割けないで終わってしまうという事態が発生します。

GeekSalonも例外ではなく、Webコース(Ruby on rails)では特にWindowsに特有の様々なエラーの対処に多くの時間を費やしてきました。そんな環境の違いによるエラーを減らすために有効な解決作の一つが「仮想環境」の導入です。その中でも今回はDockerを紹介していきたいと思います。

## Dockerとは
Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。MacやWindowsといったホストマシーンのOS上に、仮想で別のOSを立てることができるので、RubyやRailsといった、言語/フレームワークレベルのバージョンの差を気にすることなく開発が可能となります。

## 使い方

### install
Dockerにサインアップしてinstallしてくだ

元記事を表示

仕事で行うRuby/Railsのgem update手順

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110571/647100af-6758-cb7e-59fe-22ce4cf8e5e8.png)

# はじめに
こちらの記事はRuby Advent Calendar16日目の記事です。
[平成RubyKaigiではしゃぎすぎた](https://twitter.com/terry_i_/status/1205784546957905920)結果、この記事を期限ギリギリに書いていますが、後悔はして~~いる~~いません。

最近、会社のお仕事でgemのアップデートを行うことが多いのですが、ググったところgemのアップデート手順が意外と少なかった(正確に言うと、個人でのアップデートか会社でのアップデートかがわからないものが多かった)ので、自分の行っている作業をメモがてら書いてみることにしました。

「お前、そんなザルなやり方じゃ痛い目見るぞ」というマサカリ等あればヴァッシヴァシと飛ばしていただければと思いますので、Rubyのgemアップデートを

元記事を表示

Railsチュートリアル 第12章 パスワードの再設定 – PasswordResets#updateの処理をテスト駆動で実装していく

# PasswordResetsコントローラーの、ここまでに実装してきた内容に対するテスト

PasswordResetsコントローラーの`new`アクション、`create`アクション、および`edit`アクションに対するテストは、Railsチュートリアル本文の内容に合わせていくと、以下のような内容になります。

“`test/integration/password_resets_test.rb
require ‘test_helper’

class PasswordResetsTest < ActionDispatch::IntegrationTest def setup ActionMailer::Base.deliveries.clear @user = users(:rhakurei) end test "password resets" do get new_password_reset_path assert_template 'password_resets/new' # メールアドレスが無効 pos

元記事を表示

Mastodonどうしのお話を盗み聞きしてみる

分散SNSソフトのMastodon、[7月にmaster追従勢のトゥートがリモートのタイムラインに表示されなくなる](https://mastodon.crazynewworld.net/@hanage999/102409801315624762)ことがありました。トゥートを受け取る側のサーバで、`bundle: Rejected Create activity`といったエラーが記録される問題が、[シリアライザのキャッシュのキーを改善する](https://github.com/tootsuite/mastodon/pull/11271)ことでなおりました。

え?どゆこと?

ということで、Mastodonサーバどうしがやりとりをするときの様子を眺めてみることにしました。現在のMastodonはActivityPubという規格にしたがって実装されています。まず規格の内容を確認してから、Mastodonの実装の内容と稼働の様子を眺めてみます。

これは、[分散SNSアドベントカレンダー](https://adventar.org/calendars/4408)の12月16日分の記事です

元記事を表示

progateの「Ruby on Railsの環境構築をしてみよう!(Windows)」でサーバー構築につまづいた時の対処法

# サーバー構築につまづいた時の対処法
### Railsサーバーをたてたときのエラー
初めてRuby onRailsの実行環境を行う際にRailsのアプリケーション作成まではうまくいき、さあ次はRailsのサーバーを立てようかとの`rails s`のコマンドを入力したとき、以下のようなエラーを吐かれた。

“`
Could not find gem ‘sqlite3 x64-mingw32’ in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
“`

あれ?progateの記事通りにやったのに違う結果になったぞ。と思いいろいろ調べた結果どうもgemのバージョンに問題があるらしい。~~gemとはなんぞや?~~

### Gemfileの更新
Railsアプリケーションを作成したときに生成されたフォルダ直下にGemfileというものがある。
191216 qiita.PNGDocker+circleCI+ajaxでのいいね機能のRspec/systemテスト

## この記事で解決すること
ajax(js)を使ったいいね機能のRspec/systemテストの方法

## 参考記事
>
[Rails + Selenium + DockerでSystemSpecの環境構築](https://qiita.com/ngron/items/f61b8635b4d67f666d75)
[Railsでいいね機能を実装。Ajaxを使い非同期対応。で](https://qiita.com/shiro-kuro/items/f017dce3d199f06d1dcd)
[RSpec+Capybaraでajaxとかcssとかを待つ](https://qiita.com/johnslith/items/09bb0e5257e06a4bd948)
[rspec-retryでfeature specを安定させる](http://www.cl9.info/entry/2017/05/10/001424)
[Capybara::ElementNotFound 回避に wait させるか retry させるか](https://qiita.com/tetsuya/items/

元記事を表示

[失敗談]railsの環境構築で休日を潰した件[ポエム]

#注意
本記事は、貴重な休日をrails環境構築で無駄にした男の2019/12/15の作業ログです。

#得られた知見
– **目的と手段をはき違えないようにしよう(アプリケーション制作の手段の一つが開発環境構築)**
– **変なところに凝るのは辞めよう(特に時間がないとき)**
– **できるだけ環境は参考する記事のものに揃えよう(バージョンとか)**
– **開発環境構築に大きくハマったら、おとなしくcloudIDEを使おう(cloud9とか便利なものあるよね)**

#予告:「クレジットカードなしでAWSに登録して、cloud9を使ってみた(2019年12月最新版)」みたいなタイトルで今年中に記事書きます。

# 一目で分かる今回のあらすじ

“`:有名なアレ
   ,. -‐””'””¨¨¨ヽ
         (.___,,,… -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『おれはrai

元記事を表示

Railsのバリデーションの仕組みを知らなかったので調べてみました

こちらはLinc’well Advent Calendar 2019の14日目の記事となります。

タイトルの通りですが、これまでRailsを数カ月間使用してきて、

Modelで何十回もバリデーションを定義したり、
create!したらバリデーションに引っかかって`ActiveRecord::RecordInvalid`例外を起こしたり、
何十回も`valid?`メソッドを呼び出したりとしてきたのに、

そういえばvalidationの仕組みを何も知らないな。と思ったので、
バリデーション機能をコードを追いながら調べてみて、その過程をまとめてみました。

間違い等見つけていただけましたら、コメント欄でご指摘いただけたら嬉しいです!

また、文中のRailsのコードは`tag v6.0.0`のものです。

## 調べた中での一番の学び
いきなりですが、今回調べてみての一番の学びを先に述べておくと、下記の事柄でした。

– Railsのバリデーション機能は、コールバックを利用して実現されている。

## バリデーションと呼ばれる機能の構成
今回調べてみるに当たって、分けたほうが調べやす

元記事を表示

ぼくのかんがえたrails new

ここ一年ほど、仕事で自分が新規プロダクトのrails newをすることが多く、そのたびに色々考えながら落ち着いてきた初期設定です。

範囲はrails newを実行してから実アプリケーションコードを書く直前までです。
※ベストプラクティスというよりは自分の好みの側面が強い備忘録的なものとなります。

なおリポジトリはこちら https://github.com/cumet04/my-rails-new

## ディレクトリを切る
`rails new`する前に、まずプロジェクトのディレクトリをざっくり切ります。

プロジェクトルートに以下のように切ります:

* backend
* frontend
* infra
* develop

Railsに限らずnodejs系などでもそうですが、近年の開発環境はいわゆるdotfilesが無数にあってわけがわからないため、トップレベルでディレクトリを分けます。

READMEなどを除いてできるだけプロジェクト直下にファイルを置かない想定です。

### backend
Railsプロジェクトのルートになるディレクトリです。この下で`rails

元記事を表示

Rails 6 ActiveStorageを使用してS3に画像ファイルをアップロードし、取得した画像をリサイズして表示する方法

はじめまして!スタートアップでサーバーサイドエンジニアをやっています。なかのです!

[TechTrain Advent Calendar 2019(User ver)](https://qiita.com/advent-calendar/2019/techtrain)の15日目を担当します!
今回はタイトルの通り、Rails 6 ActiveStorageを使用してS3に画像ファイルをアップロードし、取得した画像をリサイズして表示する方法をお話ししたいと思います。

## はじめに

まず、簡単にActiveStorageについて説明しますと

>Active StorageとはAmazon S3、Google Cloud Storage、Microsoft Azure Storageなどの クラウドストレージサービスへのファイルのアップロードや、ファイルをActive Recordオブジェクトにアタッチする機能を提供します。development環境とtest環境向けのローカルディスクベースのサービスを利用できるようになっており、ファイルを下位のサービスにミラーリングしてバックアッ

元記事を表示

Rails:deviseの利用方法

#目的#
webアプリで必須の認証機能を自動作成してくれる便利なgem「devise」を使ってみたので使い方を説明したいと思います。

#環境#
rails 5.1.6

#deviseの導入#
#1.gemのインストール#

**1.1.Gemfileの編集とインストール**
Gemfileにdeviseを追加

“`Gemfile
source ‘https://rubygems.org’

.
.
.

gem ‘devise’
“`

gemをインストール

“`
$ bundle install
“`

#2.deviseの設定#
devise関連ファイルを追加
以下のような英文が表示されます。1から4まで順番に見ていきます。

“`ruby
$ rails g devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
====================================================

元記事を表示

db:migrateについて

勉強中に分からなくなったことをまとめて、あとで見返せる様に書いた。
今回はrailsで勉強をしていて、db:migrateが分からなdbかった。

#どんな時に使うのか
-railsで使用するデータベース構造を変更する時に使う
-①migration fileを作成する。
-②db:migrationコマンドを実行するとき

今回は②番
Railsだとマイグレーションファイルを実行することで、設計図を元にテーブルを作成したり、カラムを追加したりできる。

“`
rails db:migrate
“`

元記事を表示

Classiエンジニア新人研修での学び方の学び

Classi Advent Calendar 2019の16日目の記事をご覧いただき,ありがとうございます!
2019年新卒エンジニア@willsmileです.自称コーヒー好きですが,コーヒーのことを語ると,教育と学習の方に“脱線”してしまい,「結局,教育のほうが趣味なんじゃないの」と最近自覚した者です.

# まえがき
本文では,Classiエンジニア新人研修を通じて,自分自身が「気づいた開発について新たな観点(の一例)」を語り,将来の自分,あるいは他の人にも参考できるように,「どうやって気づいたのか」を一段上の観点から言語化することを試みます.

# 本題
## 研修の概要
Classiエンジニア新人研修のカリキュラム担当者が業界で有名なRubyist[@igaiga](http://twitter.com/igaiga555)です.Classi入社前に@igaigaさんが著者である「[ゼロからわかるRuby超入門](https://www.amazon.co.jp/dp/B07KQXFF6D/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

元記事を表示

SkyWay API + Rails6 + Vue でビデオチャットアプリを作る

ビデオチャットアプリを作るってハードル高そうですよね? 
SkyWayAPIを使うとリアルタイムでの動画通信が簡単にできます。

#前提知識
ざっくり知っているだけで十分です。
・Websocket
・WebRTC
・RubyOnRails
・Vue.js
・heroku(heroku cliをダウンロードして、heroku loginした状態で始めます)

#前置き
Railsを使う必要性は、この記事のアプリだとありません。

ユーザーや部屋の管理とかをRDS経由で行うことを前提に実装してみました。

#目標物
ユーザー二人がcallIDを使ってビデオチャットをできるようにします。

①WEBアプリ側(Rails)
herokuへのデプロイを念頭に、プロジェクトを作成していきます。
herokuにアプリの初期状態をデプロイするところから始めます。

“`console
rails new skyway_test –database=postgresql –webpack=vue
rails db:create
heroku create

git add .
git commi

元記事を表示

[Ruby on Rails] 他のテーブルを参照してidを取得し、外部キーとしてデータを挿入する

# 実現したい事
データを挿入するテーブルとは別のテーブルの情報を参照して、該当するデータのidを外部キーとして、元のテーブルにデータを追加する
![スクリーンショット 2019-12-15 17.32.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533650/335ca023-8bf4-cfdb-f144-2840dac78afd.png)
# 前提
テーブルは生産量のデータを持つProductions(生産量)テーブルと製品の情報を持つItems(製品)テーブルがあります。Productionsモデルには、idとamount(生産量)、Itemsテーブルと紐づけるためのItem_idを持っています。Itemsテーブルにはidとcode(製品コード)とname(製品名)のカラムを持ちます。また、Goodsテーブルにはすでに、製品の情報が入っているものとします。

#### 今しようとしている事
Productionsコントローラのcreateアクションで、Prodectionsテーブルに生産量

元記事を表示

Railsチュートリアル 第12章 パスワードの再設定 – PasswordResets#editの動作を、テスト駆動で実装していく

# PasswordResetsコントローラーの、ここまでに実装してきた内容に対するテスト

PasswordResetsコントローラーの`new`アクションおよび`create`アクションに対するテストは、Railsチュートリアル本文の内容に合わせていくと、以下のような内容になります。

“`ruby:test/integration/password_resets_test.rb
require ‘test_helper’

class PasswordResetsTest < ActionDispatch::IntegrationTest def setup ActionMailer::Base.deliveries.clear @user = users(:rhakurei) end test "password resets" do get new_password_reset_path assert_template 'password_resets/new' # メールアドレスが無効 post passwo

元記事を表示

ActionCable + Nginx + Redisの設定

## はじめに

このごろSPAでフェッチというマッチングアプリを作っている阿部です。
マッチングアプリと言えばチャット。
ということでチャット機能を作りました。

下手にSPAなんかに手を出したので、
WebSocketを本番で使うのに、Redisが必須になってしまいました。

備忘録がてらActionCableをデプロイするための記事を書きました。

## 前提
Rails 5.2.3
Ruby 2.5.1
Puma
Nginx
Vue
Amazon Linux AMI release 2018.03

## 説明すること
– Redisのインストール、実行
– Rails側の設定
– Production.rb
– cable.yml
– Nginxの設定
– /etc/nginx/conf.d/*.conf

## Redisのインストール、実行
サーバー上でコマンドを叩き、Redisをインストール

“`
sudo yum install redis –enablerepo=epel
“`

サーバー上でコマンドを叩き、Redisを実行

“`

元記事を表示

Ruby & Rails チートシート

# Rubyの論理値の評価

* A && B
true(nil, flase以外)が現れたら終わりでそれが論理値になる
* A || B
false(nilかfalse)が現れたら終わりでそれが論理値になる

# 特定のtest methodのみを走らせる

“`
$ rails test test/integration/users_login_test.rb TESTOPTS=”–name test_login_with_valid_information”
“`

# 本番デプロイ先のURLを確認できる

“`
$ heroku info
“`

元記事を表示

PHPerが久しぶりにRubyを書いて思ったこと

## 内容

– PHPer(Laravler)が感じたRuby(Rails)への感想

## 私の背景

– PHP成分が多い人生
– 初期だとFuelPHPとか触ってた
– ここ数年はLaravel使ってた
– Rubyは2011年頃に遊びで触ってた
– [メタプログラミングRuby](https://www.amazon.co.jp/dp/4048687158/)とか読んで興奮した記憶はある
– この当時のRailsを触って「ほーん、なるほど」、みたいに思った記憶もある
– 仕事では結局使わなかったけど、[Project Euler](https://projecteuler.net) をRubyで解いたりしてみてた

といった感じの背景です。
最近Railsで仕事することになったので、PHPer(というかLaraveler)が感じたRailsに対するギャップをいくつか書きたいと思います。
すでにRailsのプロジェクトがあり、そこにJOINした感じです。

## Autoloadがわからない

PHPのロード

“`php
requir

元記事を表示

OTHERカテゴリの最新記事