Ruby関連のことを調べてみた2019年11月04日

Ruby関連のことを調べてみた2019年11月04日
目次

RailsでActionView::MissingTemplateエラーが発生した場合の対応

## 現象

Railsで500エラーが発生し、エラーログにはActionView::MissingTemplateと書かれていました。
media/ads/show.erbは存在し、これまで問題なく表示できていたURLだったので、なぜ??となりました。

エラーログの:formats=>[“image/*”]を見る限り画像のテンプレートを探しに行ってしまっているようなのですが、URLに`.png`や`.jpg`などの拡張子が付いている訳でもありませんでした。

“`
ActionView::MissingTemplate (Missing template media/ads/show, media/application/show, application/show with {:locale=>[:ja], :formats=>[“image/*”], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
“`

## 結論

acce

元記事を表示

Rubyで日付判定して過去日なら経過日数、未来なら何日後が表示される(1)

日付関連のロジックを勉強したかったのでちょっと作ってみました

##仕様要件
・入力した日付の正当性をチェックをする
・過去日なら経過日数を表示する
・未来日なら何日後なのか表示させる

##実際に書いてみた
“`ruby:day_count.rb
require “date”

# 日付の正当性確認
def date_valid?(str)
!! Date.parse(str) rescue false
end

# 今日の日付取得、表示
today = Date.today
weekend = %w(日 月 火 水 木 金 土)
puts “本日は、#{today.year}/#{today.month}/#{today.day}(#{weekend[today.wday]})です”

input_year = nil
puts “\n指定日時を設定します”

# 指定年を入力
loop_flg = 0
while loop_flg == 0 do
puts “\n指定年を4桁の整数で入れてください。未入力の場合は今年になります”
# 入力文字列を変数に代入
in

元記事を表示

学習記録#4・5

昨晩アップロード前に力尽きたため2日分の更新です。

#11月2日やったこと

– 手慣らしタイピング:MEZZO”「Forever Note」
– progate:RubyⅡ- 8まで
– リクナビ インターンシップ&仕事研究LIVE 参加

#今日やったこと

– 手慣らしタイピング:逢坂壮五「Maybe」
– progate:RubyⅢ – 5まで
– 2DのUnity使用のミニゲーム「まほうのクッキング(仮)」のイラスト制作

##progate:RubyⅢ-5まで
個人的メモ

– ハッシュとシンボル

ハッシュ:順番に引き出しにしまっていく配列に対して、一つ一つ名付けたキーと呼ばれる箱に一つづつ入れるイメージ。配列の要素にすることもできる。

シンボル:キーに文字列を使う際の省略した書き方。exm ) :name

– メソッド

“`ruby:method
def メソッド名
処理
end

puts メソッド名
“`

引数は メソッド名(引数名) で定義して メソッド名(値) で呼び出し。
引数を設定していると値無しで呼び出すとエラー。

##リクナビ インターン

元記事を表示

HerokuでRuby on Rails6.0.0を動かす

## 目的

業務でWeb系言語に触れることが少ないので、お勉強がてら、環境構築〜公開までやってみる。
何となく、言語はRubyで、公開先はHeroku。

## 前提

– ホストOS
– macOS Mojave 10.14.6
– ゲストOS
– CentOS Linux release 7.6.1810 (Core)
– VirtualBox 6.0.10
– Vagrant 2.2.5
– PostgreSQL10 (ローカル)
– Ruby 2.6.3
– Rails 6.0.0

## 手順

### 1. vagrant up

“`sh
$ mkdir centos7
$ cd centos7
$ vagrant init centos/7
“`

Vagrantfileを以下のように編集する。

“`sh:Vagrantfile
# … 略

config.vm.network “private_network”, ip: “192.168.33.14”

# … 略
“`

“`sh
$ vagrant up
$ vagrant

元記事を表示

【Rails】RSpecのSystem Test実行前に前回テスト時のScreenshotを削除しておく

# Abstract
RSpec3.8以降のSystem Testは特に気にせずともテストNG時にscreenshotを保存してくれる。
とても便利なのだけど、ほっておくとscreenshotがいっぱいになり、いざ今回のテストで失敗した箇所を探そうとしても埋もれてしまうことがある。

いちいち`rm`を打ってから`rspec`するのも面倒なので、
今回は、RailsでRSpecを実行する時に、前回までのscreenshotを自動で削除するようにするメモ。

ベースアプリは –> [Rails on Docker(alpine)でdocker-seleniumを使わないでSelenium+RSpec+Capybaraでテスト自動化してみる – Qiita](https://qiita.com/at-946/items/6def89bb94f748ad97f2)

# 注意事項
1回ファイルパスを間違えて、rspec実行したら全てのファイルが消えた、という事件が起きたので注意してください…gitから戻せたのでよかったですが…

# FileUtilsを使う
Rub

元記事を表示

slimでHTML5のフォームバリデーションを使う

Ruby on Railsのテンプレートエンジンとしてslimを使った場合のHTML5の入力値チェックの書き方を調べてみました。

## 対象
Rails、slimの初学者

## 環境
– Ruby on Rails 5.2.3
– slim 4.0.1
– Bootstrap 4.3.1(以下の例はBootstrapを適用したformです)

## 入力値チェック/制限方法
### required属性による入力必須制約
以下のように`required: true`を追加します。

“`bash:required属性
= form_with model: user, local: true do |f|
.form-group
= f.label :name
= f.text_field :name, class: ‘form-control’, required: true
“`
### pattern属性による入力値のパターン制約
以下のように`pattern: `を追加します。

“`bash:pattern属性
= form_with model: us

元記事を表示

Dockerで構築したrailsイメージの軽量化

## 概要
先日Railsアプリの開発環境にDockerを導入しました。
しかし[入門Dokcer](https://y-ohgi.com/introduction-docker/2_component/image/)を見てみると、どうやら記述方法次第や指定するイメージによって軽量化できるとのこと

## Dockerの設定記事
先日僕が書いて投稿した記事の中で出てくるDockerfileを参考に書いていくので、一度目を通しておいてください。
[作成したRailsアプリケーションでDocker環境構築](https://qiita.com/AK4747471/items/39ddacfde6a235103277)

## Dockerのイメージを軽量化するメリット
僕は業務未経験なので[参考書](https://www.amazon.co.jp/Docker-Kubernetes-%E5%AE%9F%E8%B7%B5%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-%E5%B1%B1%E7%

元記事を表示

RubySilverに合格するまで【2019/10】

#はじめに

※必要なことのみ載せているので多少情報に偏りがありますが、もし内容に誤りがあった場合はご指摘頂けると嬉しいです。

先日RubySilverに合格したので、勉強方法を共有します。
みなさんの合格に役立てればと思います。

・実務でRubyを使い始めて大体4ヶ月
・勉強時間 約2ヶ月 計30hくらい
・結果 84/100点

#使った教材

この3つだけです。

1)Github上に上がっている問題
https://gist.github.com/sean2121/945035ef2341f0c39bf40762cd8531e0
無料。
比較的易しい。
試験内容を網羅できる。

2)Ruby技術者認定試験合格教本

¥4,000弱。
唯一の公式本。
高いので中古で買うか誰かに借りるといいかも。
公式だけど読みやすく、中でも問題集は必須。

3)REx
https://rex.libertyfish.co.j

元記事を表示

【Rails】ancestryを使って動的なセレクトボックスを作る方法

[ancestry](https://github.com/stefankroes/ancestry)というGemを使うと階層カテゴリを簡単に作ることができます。今回はancestryを使いつつ、動的なセレクトボックスを作る方法をご紹介します。

完成イメージは以下の通りです。
![dynamic_select.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/348703/ab367545-aada-7340-1de4-7b4fea6fa96d.gif)

今回使用したコードはGithubからも見れるようにしておきました。
[ancestry-sandbox](https://github.com/kenzoukenzou/ancestry-sandbox)

## 前提

– ruby-version: 2.6.3
– rails-version: 6.0.0

## 準備

### ancestryをinstall

まずはGemのinstallから行います。テストデータを作成するための`seed

元記事を表示

ruby on rails環境構築

## rbenvインストール
– rbenvをインストールする

“` zsh
$ brew install rbenv
“`
– バージョンの確認

“` zsh
$ rbenv -v
“`

– .zshrcファイルに追記

“` zsh
[[ -d ~/.rbenv ]] && \
export PATH=${HOME}/.rbenv/bin:${PATH} && \
eval “$(rbenv init -)”
“`

## Rubyインストール
– rbenvからインストールできるRubyを確認

“` zsh
$ rbenv install –list
“`

– Rubyインストール

“` zsh
$ rbenv install 2.6.5
“`
– インストールしたRubyに切り替える

“` zsh
$ rbenv global 2.5.4
$ rbenv rehash
$ ruby -v
“`
– ターミナル再起動

## Bundlerのインストール
Bundlerとはgemの依存関係とバージョンを管理してくれるツール。
Bu

元記事を表示

スクレイピングした結果を縦書きのCSSで保存する書き方

スクレイピングをした結果、CSVの横軸制限255を超えてしまって全部保存できなかったので
なんとか縦書きにCSV出力するために奮闘した結果を備忘録的な意味で残します。

“`
CSV.open(“categories#{id}.csv”, “w”) do |csv|
doc = Nokogiri::HTML.parse(html, nil, charset)
doc.css(‘.brand-list-initial-box-brand-name > div > p’).each do |node|
category = []
category << node.inner_text csv << category end end ``` ※※※※※※※※※※※※※※※※注意※※※※※※※※※※※※※※※※※※ ``` doc.css('.brand-list-initial-box-brand-name > div > p’).each do |node|
category = []
“`

上記部分を逆順にする

元記事を表示

【駆け出しWEBエンジニアのためのメモ】配列の要素の平均値算出(Ruby)

こんにちは。

Rubyの試験の復習中、配列内の要素の平均値を算出する必要がありました。
色々調べたため、こちらに備忘のためのメモを残させていただきます。

よろしければ参考にしていただければ幸いです。

その他、参照させていただいたサイトのリンクも添付しておきます。
感謝です。

“`
numbers = [1, 2, 3, 4, 5] #要素

def average_number(numbers)
 total = 0
 numbers.each do |number|
 total = total + number
end
puts average = total / numbers.length
end
“`
※ここでは適当にメソッド名を「average_number」としてます
※「numbers.length」は要素の個数の合計で、ここでは「5」
※「total = total + number」は「total += number」でもよい

以上です。
他にも書き方はあるみたいです。
ここでは、私がイメージし易い書き方で記載させていただきました。
参考にさ

元記事を表示

Railsチュートリアル12章のRestFulルーティングについて整理

# Railsチュートリアル12章のルーティングは複雑

Railsチュートリアル12章では、パスワードの再設定を行う
1.メールアドレス送信画面(パスワード再設定を行いたいユーザのメールアドレス)を表示する
2.メールアドレス送信画面でメールアドレスを送信する
3.パスワード再設定画面を表示する
4.メールアドレス送信画面で新しいパスワードを送信する

というざっくりと、4つの操作がある

## 4つの操作、4つのURL

| HTTPリクエスト | URL |Action |名前付きルート |
|:—————–|:——————|:——————-|:——————-|
| GET |/password_resets/new |new|new_password_reset_path|
| POST |/password_resets |create |passwor

元記事を表示

[Rails] いつも使用しているGemfileのテンプレを公開します

2019年の春頃に作成したGemfileのテンプレです。
Gem使用のヒントとしてや、そのままGemfileのテンプレとして良ければご利用ください。

– データベースはMySQLとしています。
– バージョンなどは適宜置き換えてください。

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

git_source(:github) do |repo_name|
repo_name = “#{repo_name}/#{repo_name}” unless repo_name.include?(“/”)
“https://github.com/#{repo_name}.git”
end

# 基本ツール
gem ‘rails’, ‘~> 5.2.3’
gem ‘mysql2’, ‘>= 0.4.4’, ‘< 0.6.0' gem 'puma', '~> 3.11′
gem ‘sassc-rails’
gem ‘uglifier’, ‘>= 1.3.0’
gem ‘coffee-rails’, ‘~> 4.2’
gem ‘jbuilder’

元記事を表示

【駆け出しWEBエンジニアのためのメモ】each_with_index(Ruby)

こんにちは。

Rubyの試験の復習中「each_with_index」と出くわしました。

初見ですが、調べてみるとものすごく使える。

こちら備忘のためのメモです。

よろしければ参考にしていただければ幸いです。

その他、参照させていただいたサイトのリンクも添付しておきます。
感謝です。

##eachループで回しつつ、行列内の値に1から番号を振りたい時

with_index doの前に、book内の変数「author,title,price」に値を代入後、行列booksに格納してます(結構端折ってますので、わかりにくい場合は申し訳ないです)

“`
~

book = { author: author, title: title, price: price }

books << book ~ #ここで「each_with_index」を用いて、行列books内のbookに対し1から順に番号を付加してます books = [ ] books.each_with_index do |book, index|   puts "#{index + 1

元記事を表示

【rails】twitter認証からアイコン画像を取得する

##はじめに
アイコン画像を表示するのに苦労したのでメモを残します。

##開発環境
Ruby on Rails 5.2

##手順

###取得方法

以下の様に記入して、twitter認証時にアイコン画像を取得します。

“`user.rb
def self.find_or_create_from_auth(auth)
provider = auth[:provider]
uid = auth[:uid]
name = auth[:info][:name]
image = auth[:info][:image]#これがアイコン画像
introduction = auth[:info][:description]

find_or_create_by(provider: provider, uid: uid) do |user|
user.name = name
user.image_url = image #image_urlにアイコンのURLが入る
user.introduction = in

元記事を表示

Rubyの開発環境を構築する際、様々なエラーが起こったので解消法をまとめてみた

#環境

Macbook Air(2016年モデル)
macOS Mojave
Homebrewインストール済み

#状況

Homebrewを使って、rbenvをインストールしようと試みたところエラーが発生し、

“`
$ brew doctor
“`

で確認したところ以下のようなWarningが出現した。

“`
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don’t worry or file an issue; just ignore this. Thanks!

Warning: The following directories do not exist:
/usr/local/opt
/usr/local/sbin
/usr/local/Cellar

You s

元記事を表示

MacOSにrvmで最新のrubyをインストールする

#rvmを最新版にする

“`
rvm get latest
“`

#インストール可能なRubyを確認
“`
rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-head] # security released on head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2[-p330]
[ruby-]1.9.3[-p551]
[ruby-]2.0.0[-p648]
[ruby-]2.1[.10]
[ruby-]2.2[.10]
[ruby-]2.3[.8]
[ruby-]2.4[.6]
[ruby-]2.5[.5]
[ruby-]2.6[.3]
[ruby-]2.7[.0-preview1]
ruby-head
“`
ruby 2.7をインストールします。

“`
ruby install ruby-2.7
“`

#インストール時にエラーが発生
“`
Checking requirements for osx.
Installing requirements for osx.

元記事を表示

平方根をとった数字が整数かどうかを判断するのに恐ろしく手間をかけていた話

##はじめに

本日は題名の通り、私がAtcoderの問題を解いていてたまに出てくる、
ある値の平方根が、整数になるかどうか、という判定の為に書いたソースについて
説明していこうと思います。

##失敗例

平方根をどうやって計算しても良いかわからない私は、
とりあえずググって出てきたMath.sqtr(x)を使って平方根を求めることを覚えました。

それをどうやって整数か判断するか、と考えた時、私の頭の中では、
「整数 = 小数点が存在しない数」という式を思いついた為、
そのように書いてみることにしました。

“`sample.rb
x = gets.split(‘ ‘).map(&:to_i)
count = 0
x.times do |n|
a = Math.sqrt(n)
#以下で、小数が存在しないことを判定
if a(-1) == nil
count += 1
end
end

“`
aの-1桁目、小数第一位が存在しない=整数、と言うことを考えていましたが、
見事にこれは不正解となりました。

##何が問題だったのか

上記のソース何が悪かったか、と言いますと

元記事を表示

#Ruby の Faraday で ssh + SOCKS による https proxy 接続ができなかったので faraday_adapter_socks gem で Middleware 指定をした

# SOCKS を起動

“`
ssh -vND 8888 user@host
“`

# gem install

“`
gem install faraday
gem install faraday_adapter_socks
“`

# Ruby or pry

環境変数に socks のURLを指定する

“`
https_proxy=socks://127.0.0.1:8888 ruby some.rb
“`

“`
https_proxy=socks://127.0.0.1:8888 pry
“`

# Ruby Code

adapter を指定して get リクエストしてみる

“`rb
Faraday.new(url: ‘https://httpbin.org/ip’) { |conn| conn.adapter :net_http_socks }.get.body
“`

e.g result

IPアドレスを返してくれるサービスにリクエストを投げてみる
sshサーバーのIPアドレスが返ってきたら成功

“`
[8] pry(main)>

元記事を表示

OTHERカテゴリの最新記事