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

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

seleniumでchromedriverのバージョンエラーが出たときの対処法

## 背景
seleniumを実行しようとしたら突然以下のエラーが表示されchromeが起動しない。
起動しないというかブラウザウィンドウは一瞬起動しようとするけど即落ちてエラーになる。

“`
session not created: This version of ChromeDriver only supports Chrome version 77 (Selenium::WebDriver::Error::SessionNotCreatedError)
“`

chromedriverがChromeのバージョンに対応していませんよとのこと。
対処してた

## 環境(ざっくり)
* Mac Mojave
* chrome(79.xxxxxxx)
* selenium + ruby
* chromedriver

## 対処
#### 1. 以下のコマンドでchromedriverの在り処を把握しておく

“`
$ which chromedriver
“`
(多分 `/usr/local/bin/chromedriver` にあると思います )

#### 2.

元記事を表示

.nill , .empty, .blank, .present?の違い

Ruby on Railsで値の存在またはオブジェクトの状態を確認するために使用できるメソッドがいくつかあります。 Rubyには.nilと.empty ? があります。Rails ActiveSupportには.blankと.present?があります。
#nil?
.nil? ObjectクラスのRubyメソッドです。 すべてのクラスを受け継ぐかのオブジェクトのクラス#nil? 任意のオブジェクトで使用できます。 Nilの場合はtrue、それ以外の場合はfalseを返します。 これは、空の文字列がnilではなく、空の配列がnilではないことを意味します。

“`
nil.nil?
=> true
“”.nil?
=> false
[].nil?
=>false
“`
#empty?
.emptyは、オブジェクトの長さ== 0を意味します。このメソッドは、文字列、配列、ハッシュで使用できます。

“`
“”.empty?
=> true
“`
ただし、空白の場合、改行またはタブ.emptyはfalseを返します。 空白、改行またはタブも文字としてカウントされます。

“`

元記事を表示

VSCodeの拡張機能でRailsと仲良くなる

# はじめに
こちらは [Classi Advent Calendar](http://hoge) 19日目の記事です。
こんにちは、Classi Webエンジニアの@hakshuです。

皆さんはRailsを書く時エディタは何を使っていますか?
RubyMine?Vim?Emacs?VSCode?Atom?さくらエディタ?

自分はフロント/サーバー関わらず、JavaScriptやTypeScriptなどを書くことが多かったので、Visual Studio Code、いわゆるVSCodeを愛用しています。

現在のプロジェクトでは、フロントエンド(Angular)/サーバーサイド(Rails)のどちらも書いており、いちいちエディタを切り替えるのも面倒で、使い慣れていることもあるので、VSCodeを使っています。

TypeScriptもVSCodeもMicrosoft製ということもありますし、静的型付けのため、補完はとても効くので、サクサク書いていくことができます。

ただ、Rubyについては、動的型付けのため、補完をいい感じに効かせるには拡張機能などでカバーが必要です。

なので、

元記事を表示

画像の複数投稿??プレビュー表示??え??

## 〇〇エキスパートにて
どうも、pirikaraです。
チーム開発にて某メルカリのクローンサイトを作成中、商品出品の画像投稿で詰まりました。
プレビューは表示されるのにデータが入ってない・・・・・・
プレビュー消したのにデータが残っている・・・・・・
など散々格闘したので、参考になればと思って書きました。

10月からプログラミング学習を開始した弱々エンジニアですので、お手柔らかによろしくお願い致します。

こんなやつ作ります(個人アプリで作ったやつです)
![21jfi-uf4mh.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/493565/4e9212a5-846b-5b5f-b6a5-340454bd3a20.gif)

## 仕様
1. 画像を10枚投稿できる
2. 投稿した画像は1枚ずつプレビューされる
3. 5枚目以降は2段目にプレビュー表示される
4. 削除を押すとプレビューから消える
5. 追加・削除したプレビューとfile_fieldの中身が同期している

## やってみよう
まず

元記事を表示

Railsで特定のURLからのリクエストを許可してiframeを表示させたい、、、

#やりたいこと
Railsでiframeからのリクエストを許可して外部のサイトで表示させたい、、、
でもすべて許可するとなにかと怖いので特定のURLに絞りたい、、、

#ということで
Railsでは

“`ruby
response.headers[‘X-Frame-Options’] = ‘SAMEORIGIN’
“`
が設定されていて自身のドメインしかiframeで表示出来ないそう

今回は特定のURLのみ許可したいので以下のように実装

“`ruby
class HogeController < ApplicationController after_action :allow_iframe, only: [:hoge] def hoge render "hoges/index", layout: false end private def allow_iframe url = "https://hoge.com" response.headers['X-Frame-Options'

元記事を表示

新規アプリケーションをGithubで管理する(Rails)

# はじめに
Railsを使ってプログラミングの学習をしているのですが、新規アプリケーションを作成する際、Githubで管理する方法を忘れてしまうので、定着させる意味でも残したいと思います。

# 環境
OS: Mac
Rails 5.0.7.2
Ruby 2.5.1
MySQL
Github Desktop

# 手順
### 1,新規アプリケーションを作成

“`terminal:ターミナル
$ cd myapp #作成したいディレクトリへ移動
$ rails _5.0.7.2_ new my-blog -d mysql #Railsのバージョンを指定、DBはMySQLを指定する。
$ cd my-blog #作成したアプリケーションのディレクトリへ移動
$ rails db:create #データベース作成
“`

### 2,Github Desktopからローカルリポジトリにする
スクリーンショット 2019-12-18 1.24.07.pngオブジェクト指向設計を実践するためのまとめ

[Zeals Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zeals) の19日目の記事です。

サーバサイドエンジニアの小寺です。私がまだ初学者に近かった頃、「もっと早く知っておけばよかった!」と心の底から思ったオブジェクト指向設計についての知識を書き残しておこうと思います。

今回は、実務で求められる「保守性の高い読みやすいコード」を実践するために
オブジェクト指向設計実践ガイドを学習し、理解できたところを自分なりに要点をまとめ・メモし、備忘録としたものです。
(※4章までの内容が理解できれば十分実践していけると思いますので4章までしかまとめてないです)

## 参考書籍
[オブジェクト指向設計実践ガイド](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E8%A8%AD%E8%A8%88%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4

元記事を表示

[Rails6]ActionTextの入力フォームが伸びて困る

# はじめに
就活のポートフォリオサイトとして[Asobi](http://www.asobi-app.com/)というWebサイトを作成しました。(QiitaにAsobiに関しての記事を書いています。[就活用ポートフォリオとしてWebサービス「Asobi」を作りました。](https://qiita.com/sasakura_870/items/1eb666c80c4ceb815dd8))
このサイトの中でRails6から新しく導入された`ActionText`を使っているのですが、入力フォームが行数に応じて伸びてしまいます。

今回はそんなActionTextの入力フォームをいい感じにするためにやったことをご紹介します。

# 実行環境
+ Ruby 2.6.5
+ Rails 6.0.2

# ActionTextとは
Rails6から実装されたリッチテキストコンテンツと編集機能を導入する機能です。

ActionTextのインストールと導入したいモデルとカラムの用意を行い、少しコードを書くだけでブログのようなリッチテキストエディタが導入できます。

![actiontext_t

元記事を表示

未経験が受託企業に入って半年経ったので、学んだスキル全部書いてみる

#はじめに 

今年2019年6月にエンジニアとして晴れてキャリアをスタートさせました。
それから約半年間で本当にいろいろなことを学ばせて頂いたので、私ごとですが簡単に学んだことをまとめます。

もちろんマスターなんてしておらず、全てが勉強中なうえ、なんならちょっとかじっただけのものまで書いてますので悪しからず。

一概に未経験といっても、自社開発/受託企業/SES企業、大手/メガベンチャー/スタートアップ、元IT業界/全くの素人、普段からパソコン触ってた/触ってない等いろいろなキャリアの始め方があると思うので、平均的な成長度合いなのかどうかは不明ですが、ほんの一例としてご参考ください。

■簡単な経歴

・良くも悪くもない普通の大卒
 パソコンスキルはitunesで音楽入れる程度
・某アパレルチェーン企業で3年ほど勤務
 内2年管理職
 パソコンスキルはWordで毎週報告書を書く程度
・2018/12〜  Mac購入
       某オンラインスクールで勉強開始
・2019/3〜 独学開始、都内もくもく会に週1参加、Menta契約、アプリ作成等
・2019/6〜 就職
・2019/1

元記事を表示

rails 部分テンプレート健忘禄

#rails ~render 健忘禄~

共通部分のレイアウトをまとめて一つのファイルにしてそれを使い回す際に用いられる

`code`
“`index.html.erb

“`
↑で記述したところに”_ファイル名.html.erb”のレイアウトが表示される。

– パスの部分は部分テンプレートのファイル名がインスタンス変数の単数形
– 部分テンプレートのファイル内で使う変数名が同一であること
この条件を満たしていれば

`code`
“`index.html.erb

“`

と記述することができる。

元記事を表示

rails gするとDid you mean? deprecate_constantとエラーがでる

コントローラとビューを作成するためrails gすると下記のエラーが起きました。
備忘録としてまとめます。

エラー文抜粋

“`
r.rb:28:in `
10: from /Users/****/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.0.7.2/lib/rails/generators/base.rb:168:in `hook_for’
9: from /Users/****/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.0.7.2/lib/rails/generators/base.rb:168:in `each’
8: from /Users/****/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.0.7.2/lib/rails/generators/base.rb:178:in

元記事を表示

【Selenium】ここらへんラッパーしとくとスッキリするんじゃないか、ってクラス 【Ruby】

#クラス宣言
“`php
require ‘selenium-webdriver’
require “rspec/expectations”

class BaseTest
TEST_STR = ‘test’
TEST_NUM = ‘100’
TEST_YEAR = ‘2019’
TEST_MONTH = ’10’
TEST_DAY = ’10’

include RSpec::Matchers
“`
デフォルトでテキスト入力したいときの定数を定義しておきます。
私は`RSpec`のアサーションだけ使いたかったのでここでインクルードしてます。

#ウェブドライバー作成
“` ruby
def self.create_driver
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument(‘–headless’) #ヘッドレスモードで起動
options.add_argument(‘–window-size=3000,3000’) #画面サイズを設定
driver = Se

元記事を表示

Railsでセルフパスワード変更ページを作ってみた

# はじめに

本記事は、社内の古くなっていたシステムをリニューアルした際の手順やノウハウをまとめたものになります。
また、当記事は以前の投稿記事「[Ruby on Rails6.0の環境構築から新規プロジェクト作成まで(メモ)](https://qiita.com/yuki68427913/items/a87cbe68abede73a78c5)」で作成した環境を前提に作成していますので、参考にされる方はご注意ください。

# 前提条件

* 開発環境はCloud9
* Linuxコマンドの使い方がわかる程度の力量
* Web開発は初学者クラスの力量(ruby on rails開発未経験/Progateのレッスンは修了済)
* HTML/CSSは難しい事はできないけど書いて読める程度の力量
* javascriptは難しい事はできないけど書いて読める程度の力量

# 参考記事

> [RubyのNet::SSHの使い方.リモートサーバー内でsuしたりrsyncするrubyスクリプトが作れるようになる【外部サイト】](https://takuya-1st.hatenablog.jp/

元記事を表示

Ruby で DistIP,DistPort,SourceIP,SourcePort を指定して Tcp 通信を行うコード

#きっかけ
通信の検証で5-tupleの影響を受けているのか確認する必要があった

#5-tupleとは
IPヘッダに存在する5つの要素のことで

1.Source IP
送信元アドレス
2.Destination IP
宛先アドレス
3.Source Port
送信元ポート
4.Destination Port
宛先ポート
5.Protocol
プロトコル

を指す

“`ruby:tcp.rb
require ‘socket’

distIp = “111.111.111.111”
distPort = 80
sourceIp = “222.222.222.222”
sourcePort = 100

begin
s = TCPSocket.open(distIp,distPort,sourceIp,sourcePort)

元記事を表示

Homebrewのruby-buildの更新を待たずにrbenvで最新版のRubyをインストールする方法

## はじめに
Homebrewでrbenvとruby-buildの組み合わせでRubyをインストールしている場合は、以下のコマンドで最新版のインストールパッケージを取得することができる。

“`
brew upgrade rbenv ruby-build
“`

ただし、最新のruby-buildがHomebrewに反映されるまでには数日かかることがあるため(※)、最新バージョンのRubyがリリースされてもすぐにインストールできないことがある。

※ 参考情報
ruby-buildの更新に時間がかかるのは、HomebrewへのPull request(以下PR)の作成とマージが必要になるから。
→ 例:[ruby-build 20191205のPR](https://github.com/Homebrew/homebrew-core/pull/47516)

Homebrewの更新を待たずにすぐにインストールしたい場合は、以下の手順で自力で最新版のインストールパッケージをセットアップすることができる。

## 手順1. ruby-buildのディレクトリへ移動する

ターミナルか

元記事を表示

getsメソッドで入力された値を取得 ❏Ruby❏

Rubyで`gets`を読み込むとターミナルで入力待ちになります。
そこで入力された値を文字列として返します。

実際にやっていきやす!

`gets`だけだと勝手に改行されるので、それを防ぐために`.chomp`を付けます。

“`ruby:sample.rb
word = gets.chomp
puts word
“`

“`:ターミナル
$ ruby sample.rb
##入力待ち

Hello World!
##適当に打ち込みenterを押すと…

Hello World!
##結果が表示される
“`

#※あくまで文字列を返す

`gets`は数字を打ち込んでも文字列として返します。
数値として返したい場合は、`.to_i`を付けます。

“`ruby:sample.rb
number = gets.to_i
puts number + 3
“`

“`:ターミナル
$ ruby sample.rb
##入力待ち

5
##適当に打ち込みenterを押すと…

8
##結果が表示される
##numberには数値が入ったことがわかる。
“`

【結論

元記事を表示

Rails6 のちょい足しな新機能を試す112(database.yml warning編)

# はじめに

Rails 6 に追加された新機能を試す第112段。 今回は、`database.yml warning` 編です。
Rails 6 では、複数データベースに対応していますが、 `database.yml` ファイルで複雑なERBが使われていると警告が出るようになっています。

Ruby 2.6.5, Rails 6.0.1 で確認しました。 (Rails 6.0.0 でこの修正が入ったようです。)

“`shell
$ rails –version
Rails 6.0.1
“`

今回は、警告を出すために、 環境変数 DB によって、 MySQLデータベースかPostgreSQLデータベースにアクセスを切り変えるということで試してみたいと思います。
複数データベースの機能は使いません。

# Rails プロジェクトを作成する

“`shell
$ rails new rails_sandbox
$ cd rails_sandbox
“`

# Gemfile に mysql2 と pg を追加する。

MySQL と PostgreSQL どちらでも接続で

元記事を表示

.present?はnilかそうじゃないか、という場合は不要

キャンペーンコードから適用されるキャンペーンとプランに紐づくキャンペーンがあるんだけど、キャンペーンコードからのキャンペーンを配列の一番最初に表示させたかった時の実装。

辞書型(hash型)なのが注意。
`key`でキャンペーンコードからのものを探して一旦削除して`unshift`で先頭にpushしてるんだけどいまいち納得いってない。。もっといい方法ないのかな?

修正前

“`order_base_decorator.rb
def order_campaigns
c = options[‘campaigns’].to_a
cc = c.find{|x| x[“key”] == “campaign-code”}
c.delete(cc) if cc.present?
c.unshift(cc) if cc.present?
if c.present?
unless c.first == {} || cc
return c.unshift({}).to_a
end
return c

元記事を表示

【Ruby】NaNのNaNa不思議

これは [Ruby Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ruby)の18日目の記事です。[Otemachi\.rb \#17 \- connpass](https://enechange-meetup.connpass.com/event/129264/)で話した内容の大幅加筆修正版です。

**実用性は皆無**ですので、求めている方はブラウザバックしてください。

## NaN (Not a Number) とは
みなさん **NaN** ってご存知でしょうか?

NaNとは **Not a Number** の略で、日本語では非数といいます。主に浮動小数点演算の結果が不定形だったり未定義だったりするときに返ってきます。

[constant Float::NAN \(Ruby 2\.6\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/2.6.0/method/Float/c/NAN.html)

その数がNaNであるかどうかは、`Float#nan?

元記事を表示

Rails6でRSpecのコントローラテストをしようとするとエラーが発生する

## はじめに

[Everyday Rails – RSpecによるRailsテスト入門](https://leanpub.com/everydayrailsrspec-jp)を見ながら、
勉強がてらアプリにRSpecを追加していましたが、
Rails6特有のエラーが発生しましたのでご紹介します。

### 2019/12/18追記

[Everyday Rails – RSpecによるRailsテスト入門](https://leanpub.com/everydayrailsrspec-jp) の翻訳者の一人である、
@jnchito さんがRails6でRSpecを使用する際の変更点を挙げられた記事があります。

Rails6でRSpecを使用する際の変更点が網羅されていますので、
ぜひご参照ください。

[【動画付き】Everyday RailsのサンプルアプリをRails 6で動かす際に必要なテストコードの変更点 – give IT a try](https://blog.jnito.com/entry/2019/10/25/053521)

## 開発環境のバージョン

元記事を表示

OTHERカテゴリの最新記事