Ruby関連のことを調べてみた2020年01月10日

Ruby関連のことを調べてみた2020年01月10日
目次

【Rails】config/localesに新規追加したファイルが読み込まれない【I18n】

# はじめに
タイトルの通りです。
Railsで多言語化対応をする際にconfig/localesにymlファイルを追加していくと思いますが、それが読み込まれない場合の対応策です。

# 結論
早速結論なのですが、超シンプルで、`Railsサーバを再起動する`です。。。
既存ファイルに訳文を追加する場合はRailsサーバの再起動は不要ですが、新規ファイルを追加した場合はRailsサーバの再起動が必要です。

ちなみに少しこの内容と外れるかもしれませんが、RailsガイドにRailsの初期化プロセスについて記載があったので参考としてリンクを貼っておきます。
[Railsの初期化プロセス](https://railsguides.jp/initialization.html)

# おわりに
単純なミスで恥ずかしいのですが、めっちゃハマって辛かったので記事にしてみました。(typoやインデント、ディレクトリ構成等見直しまくりました。。。)
案外検索しても出てこず、他ごとしてたら急に「これ、サーバ再起動案件じゃね。。。?」と気が付いた次第です。はい。

元記事を表示

I understand #Ruby Lonely operator &. is a operator allows nil receiver method chains

If receiver is nil you can do method chains many times

“`rb
nil&.to_wow
# => nil
nil&.to_wow&.to_ya
# => nil
nil&.to_wow&.to_ya&.to_yes!
# => nil
“`

If not nil is reciever then you can not chain undefined method by lonely operator

“`rb
100&.to_wow
NoMethodError: undefined method `to_wow’ for 100:Integer
“`

# Original by Github issue

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

元記事を表示

index.html+mobile.haml なviewをrspecする

“`ruby
before_action do
request.variant = :mobile if ua.match(/Android/)
end
“`

とかするとviewを切り替えられる `ActionPack Variants` という機能[^1]で
view specを書く方法

“`ruby
# spec/views/users/index.html+mobile.haml_spec.rb

RSpec.describe ‘users/index.html+mobile.haml’, type: :view do
it do
render
end
end
“`

とやると 「`html+mobile` 何ていうフォーマットねーよ」 と怒られる
なので `render` の呼び出しで正しい情報を与える

“`ruby
# spec/views/users/index.html+mobile.haml_spec.rb

RSpec.describe ‘users/index.html+mobile.haml’, type: :view do

元記事を表示

テーブルの結合ができない。。Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous

# はじめに
Railsでeager_loadしようとしたときに、下記のようなエラーが出て解消に時間がかかったのでまとめました。

“`
Mysql2::Error: Column ‘updated_at’ in order clause is ambiguous
“`

# やりたいこと
user の updated_at を指定した期間のものだけ抽出するために、テーブルの結合をしたい。

# なぜeager_loadできないのか

これを実行すると、

“`ruby:user.rb
User.where(“updated_at >= ‘2020/01/01’ and updated_at <= '2020/01/31'").eager_load(:post) ``` MySQLのエラーが出る。 ``` Mysql2::Error: Column 'updated_at' in order clause is ambiguous ``` なぜか。 updated_at は User にも Post にも存在しているため、どちらの updated_at なのか判別がつかな

元記事を表示

日本測地系の緯度経度を(誤って)世界測地系として地図上に表示した際の位置と距離を調べる

## 概要

– 日本測地系の緯度経度を(誤って)世界測地系として地図上にピン表示する
– 日本測地系の緯度経度を世界測地系に変換して地図上にピン表示する
– 両者の距離を算出する (日本測地系と世界測地系のズレ)
– 地図や緯度経度の算出は Ruby と [YOLP (Yahoo! Open Local Platform)](https://developer.yahoo.co.jp/webapi/map/) の API を利用する

## 日本測地系と世界測地系

– 日本測地系: 2002年4月1日まで使われていた測地系 (別名: Tokyo Datum)
– 世界測地系: 2002年4月1日から使われている測地系 (別名: 日本測地系2000、JGD2000)

[「測地成果2000」と「測地成果2011」|国土地理院](https://www.gsi.go.jp/sokuchikijun/jgd2000-2011.html)

> 我が国では世界測地系を適用するため、平成13年に測量法の一部を改正し、平成14年4月1日から施行されました。また、測量法施行令の一部を改正する政令

元記事を表示

Railsで検索窓で入力された文字列を使ってDBを検索する

# whereメソッドとLIKEの説明
whereメソッドとは、DBに対して任意の条件で検索して、データを取得するためのメソッド。
LIKEは、曖昧検索を行う仕組み。
ここでいう曖昧検索とは、「文字列が”a”ではじまる単語」とか「”06″で始まる電話番号」などの曖昧な表現を検索する仕組みです。

まず前提として、usersテーブルから特定の文字列で始まるユーザー名を検索しています。
このコードはコントローラに記述されていて、リクエストで入力された値がparams[:keyword]で送られてきています。

以下のコードを見ながら説明します

“`ruby:qiita.rb
@users = User.where(“name LIKE ?”, “%#{params[:keyword]}%”)
“`
三段階にわけて説明します。
①User.where
モデル名.whereとすることで、そのモデルのテーブルを検索するよう指示を出します。
②whereの第一引数 “name LIKE ?”
まずLIKEの前で、検索するカラムを指定します。ここではnameカラムを検索するようにしています。

元記事を表示

【Homebrew】Windows10で$ brew install chromedriverはできない

# コトの顛末
Windowsにrubyを導入して、seleniumを使用した自動テストや情報収集をするツールを作りたくて、
環境構築をしておりました。
そのなかで、**chromedriver**なるものをDLして**パスを通す**をしてくださいということが書いてあったのですが、
「え、何言ってるのわからない。エラーでるし。」ってなっていろいろ調べていたら、

“`console
$ brew install chromedriver
“`
このコマンドで簡単にインストールできるよ。
って記事を見たので打ち込みでみたら、
**「Homebrewが入ってないからこのコマンドを実行できないよ」**となりました。

と、いうことで
Windows10にHomebrewをインストールしてから、再度selenium用の環境構築しよう!
ってなわけで始まりました。

# 結論 Windowsで“`$ brew install chromedriver“`はできない
**できない**と言ったら語弊がありますが、キッパリ言いました。
悲劇は繰り返してはならない。
そのためのQiita、そのた

元記事を表示

【Rails】FontAwesome

準備

Gemfileに
`gem ‘font-awesome-rails’`を記載。
ターミナルで`gem ‘font-awesome-rails’`を実行。

“`bash:ターミナル
bundle install
“`

`application.css`に`*= require font-awesome`を記載。

“`css:app/assets/stylesheets/application.css

/*
(省略)
*= require font-awesome
(省略)
*/
“`

使い方

``

ヘルパーメソッドを使用できるので
`<%= fa_icon("home") %>`
と書くこともできる。

例えば
`<%= fa_icon("home 5x") %>`
で5倍。

元記事を表示

Ruby

難しいと思う

元記事を表示

「よいサンプルコード」ってどんなサンプルコード? 〜Qiitaや技術ブログを書くときに気を付けること〜

## はじめに
Qiitaやブログに技術記事を書く場合は多かれ少なかれ、サンプルコードを書くと思います。
たかがサンプルコード、されどサンプルコード。
技術記事に書くサンプルコードはどうあるべきなのでしょうか?

いろいろな観点があると思いますが、この記事では僕が考える「よいサンプルコード」について語ってみようと思います。

なお、この記事のサンプルコードはRubyで書いていますが、記事の内容自体はRubyに限らずどんな言語にも適用できるものです。

## どういったサンプルコードが理想的なのか(大雑把なレベルで)

細かいポイントの説明に入る前に、大雑把なレベルで理想的なサンプルコードについて確認しておきましょう。
以下は僕が考える理想的なサンプルコードです。

– 読み手(=見知らぬ第三者)のことを一番に考えて書かれている
– 読み手がすっと理解できるコードになっている
– 読み手(特に初心者)を正しい方向に導くコードになっている

上の条件をひっくり返すと、あまり望ましくないサンプルコードの定義が浮かび上がります。

– 自分のことしか考えていないコードになっている
– 読み手が

元記事を表示

Ignoring gemfile名 because its extensions are not built. Try: gem pristine gemfile名 –version

Rails new もしくは Rails sした際に表題のエラーが多数出た。

解決方法
実際にターミナルで表示されている
Try:以降の部分をターミナルに打ち込めば解決します。
`gem pristine gemfile名 –version `

このエラーが何で起きているのか自分なりの解釈で解説

Ignoring 訳:無視する
because its extensions are not built 訳:拡張機能が構築されていない為
pristine 訳:gemの隠し場所にあるファイルからインストールしたgemを初期状態へ戻す

拡張機能ここでいうGemファイルが構築されてないんで無視します。Try以降の部分を実行し初期状態に戻してくださいと言っている

元記事を表示

gem install で特定のversionをインストールする

“`
gem install gem_name -v version_number
“`

“`
gem install gem_name –version version_number
“`

“`
gem install gem_name:version_number
“`
コロンでもversion指定ができる
https://github.com/rubygems/rubygems/blob/master/lib/rubygems/commands/install_command.rb
> Can’t use –version with multiple gems. You can specify multiple gems with version requirements using gem install ‘my_gem:1.0.0’ ‘my_other_gem:~>2.0.0’

元記事を表示

【Rails】kaminariを使用して基本的なページネーション機能を実装する

## 前提
bundlerを使用して、Gemfileでgemを管理していることを想定しています。

## 使い方
### 準備(インストール)
1.Gemfile内に`gem kaminari`を記述

“`ruby
# Gemfile
gem ‘kaminari’
“`

2.kaminariをインストール

“`shell
$ bundle install
# 「bundle」だけでもOK
“`

### 設定
#### 設定ファイル作成
1.設定ファイルを作成する

“`shell
$ rails g kaminari:config
“`

2.設定ファイルが作成される

config/initializersディレクトリ配下に「kaminari_config.rb」ファイルが作成されます。
作成されたファイルをいじることで、「kaminari」のデフォルト設定を変えることができます。

以下の記事に詳しく書かれていたので参考にしてみて下さい。
[Railsライブラリ紹介: ページングを行う「kaminari」](https://www.techscore.com/

元記事を表示

`# frozen_string_literal: true` 内でBOM付きCSVファイルを生成する

# CSVをExcelで開くにはBOMをつけておけば良い

[UTF-8のCSVファイルでも、BOMをつけておけば、Excelで開ける](https://primarytext.jp/blog/1275)ということを昨日知りました!

Rubyでサンプルを書いてみます。

“`ruby:with_bom_csv.rb
# frozen_string_literal: true

require ‘csv’

File.open(‘with_bom.csv’, ‘w:UTF-8’) do |file|
bom = “\uFEFF”
headers = [‘id’, ‘first name’, ‘last name’, ‘age’]
csv_data = CSV.generate(+bom, headers: headers, write_headers: true) do |csv|
csv << ['1', '太郎', '田中', '20'] csv << ['2', '次郎', '鈴木', '18'] csv << ['3', '亜海', '佐藤

元記事を表示

【初心者向け】Rubyで超簡単な本紹介アプリを作ってみる(each.with_index編)

#each.with_indexを使って、配列の要素と要素番号を取り出し、表示させる

今まで作ったアプリケーション(1~3)の続きとなります。
1.Rubyで超簡単な本紹介アプリ
https://qiita.com/pontarou194/items/79d581955757e2589b00

2.Rubyで超簡単な本紹介アプリ(カテゴリ指定ver)
https://qiita.com/pontarou194/items/37a9c63fe617e3244e19

3.Rubyで超簡単な本紹介アプリ(日時指定自動表示)
https://qiita.com/pontarou194/items/4a7db6c7d9036cd0c53e

#each.with_indexを使って表示させたい番号を指定できます。

例えば以下のような例です。

“`
categorys = [“小説”,”ノンフィクション”,”ビジネス書”]
categorys.each.with_index(1) do |category, number|
“`
このように指定すると、
1:小説
2:ノンフィクション

元記事を表示

[Ruby]パッケージ管理について

# Rubyのパッケージ管理について
## gemとは
決まったフォーマットのRubyライブラリのこと。
「gem install ○○」でいうところの、○○の部分がgem。

## Rubygemsとは
gem専用のパッケージ管理システム。
ライブラリであるgemを管理するものだが、パッケージ管理システムと呼んでいる。
ライブラリ≒パッケージらしい。
gem installのコマンドでライブラリをインストールしてくれるのはこいつ。
こいつのことをgemと言ったりする人がいるのでややこしい。

## Bundlerとは
プロジェクトごとにgemを管理したりするやつ。
「Gemfile」と「Gemfile.lock」と呼ばれるファイルを利用する。
各gemのバージョンなどによる依存関係をまるっと管理してくれる。
Bundler自身もgemの一つ。

## 参考
[ライブラリ? gem? bundler? — Rubyのgem管理に関するあれこれまとめ](https://qiita.com/3no3_tw/items/8c1e3e95c75edae1036d)
[Ruby ライブラリ](

元記事を表示

RubyとSinatraで寿司ネタをレコメンドするAPIサーバーを作った

# 作ったもの
[このデータセット](http://www.kamishima.net/sushi/)を使って寿司ネタの好みをPOSTするとおすすめのすしネタを教えてくれるAPIサーバーを作った.
https://github.com/ItoYo16u/ruby_sushi_recommend

**Request**

“`
curl http://localhost:4567/api/v1/ -X POST -H “Content-Type: application/json”
-d ‘{
“ika”:1,
“tako”:2,
“tarako”:3,
“sanma”:2,
“ankimo”:1,
“fugu”:4,
“okura”:2,
“buri”:3,
“zuke”:1,
“kue”:3
}’
“`
**Response**

“`
{
“best”:[
“ebi”,
0.977910028….
],
“second_best”:[
“maguro”,
0.311296889…

元記事を表示

初心者によるプログラミング学習ログ 207日目

#100日チャレンジの206日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。

100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。

207日目は

Errno::ENOENT: No such file or directory @ rb_sysopenの対処法

__備忘録__
テスト用のDBを作ろうとして、“rake db:migrate“を実行したら以下のようなエラーが起きた。
原因は、spec配下に“db“のディレクトリーがなく“schema“が無かったために下記のエラーが生じていた。
ちなみに、“migrate“は成功しているので無視しても平気。
でも、エラーを無視するのは気持ち悪いのでschemaファイルを作って再度、“drop“,“create“,“migrate“を実施した。
(僕の場合は、dbディレクトリーを丸ごとコピーしてspec配下にペーストした。)

結論としては、以下のエラーが起きたら“schema“を作成し、再度“rake db:migrate“をしてあげる事により解消できる。

“`console
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen – /Users/kaye/Desktop/work/sample_app/spec/dummy/db/schema.rb
/Users/kaye/.

元記事を表示

OTHERカテゴリの最新記事