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

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

hashのkeyとvalueのマッピングに関して

hashのvalueをうまく取得できないので調べてみたらちょっとした見落としだった。

“`ruby
hash1 = {key: “value”} #=> {:key=> “value”}
“`
と、

“`ruby
hash2 = {“key”=> “value”} #=> {“key”=> “value”}
“`
の違いを理解していなかった。
記述の仕方でkey名が変わるようだ。
上の例では

“`ruby
hash1[“key”] #=> nil
hash1[:key] #=> “value”
“`
になる。

元記事を表示

RailsでGoogleMapsAPIを表示・ピン表示まで

#はじめに
過去に自分のポートフォリオでGoogleMapsAPIを利用していましたが、流れを忘れていたのでリマインドです。

#環境

rails 5.2.3
ruby 2.6.3

#今回すること
・現在地情報から経度緯度を取得しマーカーを表示する。
・取得した一覧情報をjson形式に変え、マーカーとして地図上に配置。
・地図の表示

###表示させるコントローラー作成、今回アクション名はsearchで。

“`ruby:spaces_controller.rb
def search
@spaces = Space.all
end
“`

###モデルの作成、住所を入力後緯度経度を自動取得させる。

“`ruby:space.rb
class Space < ApplicationRecord geocoded_by :address after_validation :geocode, if: :address_changed? end ``` ```ruby:schema.rb create_table "spaces", force: :cas

元記事を表示

超初心者向けGitHubの使い方(チーム開発)

自分自身が、GitHubの初心者なので
Rubyチーム開発の手順として、忘備録としてまとめます。
GitHubのアカウントを持っていて、GitHub Desktopもダウンロードしている
ことを前提としています。
もし、何か間違っていることがあれば教えていただきたいです。

最初に、アプリの雛形を作成します(デプロイする人が作成をします)。

ターミナル

“`
% rails _6.0.0_ new アプリ名 -d mysql    # mysqlデータベースでの開発
“`

config/database.yml

“`ruby:

default: &default
adapter: mysql2
encoding: utf8 # encodingを変更。
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
socket: /tmp/mysql.sock
“`
ターミナル

“`terminal
% rails db:create # デ

元記事を表示

Python でクラス作成してダックタイピングしてみた

#人間クラスと継承、車のクラスで判定

ダックテストというものがあるらしい。Wikipedia様の情報によりますと
“If it walks like a duck and quacks like a duck, it must be a duck”
「もしもそれがアヒルのように歩き、アヒルのように鳴くのなら、それはアヒルに違いない」
という考え方のようです。ここから来たのがダックタイピング。

ダックタイピングは例えばRubyだとこんな感じとなります。
##Ruby でのダックタイピング

“`Ruby:sampleRuby.rb
# テスト
def test(foo)
puts foo.sound
end

# アヒルの鳴き声
class Duck
def sound
‘quack’
end
end
# 猫の鳴き声
class Cat
def sound
‘myaa’
end
end
# 実行
test(Duck.new)
test(Cat.new)
“`
出力は

“`Ruby:
# 出力結果
quack

元記事を表示

deviseのビューファイルに自動でbootstrapのスタイルを適用する

## 結論
“`
$ rails g devise:views:bootstrap_templates -f
“`
これで全てのdeviseのビューファイルに、自動でbootstrapのスタイルが適用される。
アカウント.png
ログイン.png
パスワード.pngrubyでドローポーカーを作ってみる~実装編5(ゲーム)【完結】~

## 概要

[rubyでドローポーカーを作ってみる~準備編~](https://qiita.com/r12tkmt/items/56a60f2d69226b2bdcf2)

[rubyでドローポーカーを作ってみる~test-unit準備編~](https://qiita.com/r12tkmt/items/48940d0e09a77d210bf2)

[rubyでドローポーカーを作ってみる~実装編1(カード)~](https://qiita.com/r12tkmt/items/175aa66fd91995f13524)

[rubyでドローポーカーを作ってみる~実装編2(役)~](https://qiita.com/r12tkmt/items/cd22e04eb102eabf03cd)

[rubyでドローポーカーを作ってみる~実装編3(プレイヤー)~](https://qiita.com/r12tkmt/items/ae44086d9bf7d01e7572)

[rubyでドローポーカーを作ってみる~実装編4(山札)~](https://qiita.com/r12tkmt

元記事を表示

[Ruby]変数の中身を表示する

# 概要
Rubyのputsメソッドを使用したときに、用意した変数の中身を表示する方法を記します。

# 環境
Ruby 2.6.5

# 内容
変数の中身を表示する場合は以下のように記述します。

“`
number = 10
puts number
puts “#{number}”
puts ‘#{number}’
““
実行結果

“`
10
10
#{number}
“`

`※ポイントは、シングルクォーテーションで囲った場合はそのまま出力されてしまうところです。`

元記事を表示

bundle install時のエラー

# 概要
Railsアプリケーションでgemをbundle installした際に発生したエラーと解消方法について記します。

# 環境
Ruby 2.6.5
Ruby on Rails 6.0.0

# 内容
エラー文

“`ruby
An error occurred while installing pg (1.2.3), and Bundler cannot
continue.
Make sure that `gem install pg -v ‘1.2.3’ –source ‘https://rubygems.org/’`
succeeds before bundling.
“`

“`
Could not find gem ‘pg (>= 0.18, < 2.0)' in any of the gem sources listed in your Gemfile. ``` といったエラーです。 # 解消方法 下記コマンドで解消しました。 ``` brew install postgres ``` postgresSQLで引っかかっていたみたいです。

元記事を表示

[Rails]エラーメッセージの日本語化

# 概要
Railsアプリケーションのエラーメッセージを日本語化する手順を記します。
入植画面で未入力や不備があった場合に出力する下記の様なメッセージです。

bcb5b66aaa2336c94683fe2b94ccc49d.png

# 環境
Ruby 2.6.
Ruby on Rails 6.0.0

# 手順
①config/application.rbに記述

“`ruby
module Pictweet
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 6.0

元記事を表示

【初心者】環境変数設定-dotenv-rails-

##環境変数とは
環境変数とは、Githubにアップロードすることができない情報を入れておく箱のようなものです。
これにより、アプリケーションに直接パスワードなどを記述しなくとも、
OSからデータを渡す事で、情報漏洩の心配なく、アプリを稼働させる事ができます。

##設定方法
#####gemのインストール
“`ruby:Gemfile
gem ‘dotenv-rails’
“`
“`
$ bundle install
“`
#####.envファイル作成
Gemfileが置いてあるルートディレクトリに
.envファイルを作成

#####環境変数作成
“`
KEY=’*******’ #使用したいキーやパスワードを
SECRET_KEY=’*******’
“`
呼び出す時は

“`
ENV[‘KEY’]
“`
とすれば呼び出せます。

#####Git管理下から除外

“`ruyb:.gitignore
/.env
“`
これを忘れると情報が漏洩してしまうので忘れずに必ず設定してください。

元記事を表示

[Rails]Formオブジェクト使用時のエラーメッセージ日本語化

# 概要
RailsフリマアプリでFormオブジェクトを実装した部分のみ、日本語化がうまく行かなかったので、解消方法を記します。

# 前提
ja.ymlファイルの作成までは完了している。
Formオブジェクト以外のエラーメッセージについては日本語化ができている。

# 環境
– ruby 2/6/5
– Ruby on Rails 6.0.0

# 内容

`ja.yml`に日本語入力の記述をしても日本語にならない

config/locales/ja.yml

“`ruby
ja:
activerecord:
attributes:
user:
nickname: ニックネーム

item:
text: テキスト
image: 画像
name: 商品名

card_address:
postal_code: 郵便番号

元記事を表示

rubyでドローポーカーを作ってみる~実装編4(山札)~

## 概要

[rubyでドローポーカーを作ってみる~準備編~](https://qiita.com/r12tkmt/items/56a60f2d69226b2bdcf2)

[rubyでドローポーカーを作ってみる~test-unit準備編~](https://qiita.com/r12tkmt/items/48940d0e09a77d210bf2)

[rubyでドローポーカーを作ってみる~実装編1(カード)~](https://qiita.com/r12tkmt/items/175aa66fd91995f13524)

[rubyでドローポーカーを作ってみる~実装編2(役)~](https://qiita.com/r12tkmt/items/cd22e04eb102eabf03cd)

[rubyでドローポーカーを作ってみる~実装編3(プレイヤー)~](https://qiita.com/r12tkmt/items/ae44086d9bf7d01e7572)
に続いて。

ソース: https://github.com/rytkmt/ruby_poker

## 山札の実装

元記事を表示

【cygwin】Redmineを動かす

# 留意点

– 現在(2020-07-24)、bundleがバージョンアップを見据えた対応している。
– この関係もあり、古い情報は “`rubygem“`, “`bundle“` に注意
– 個人で利用することを前提に、sqlite3を利用する。

# ダウンロードファイル一覧
– redmine-4.1.1.tar.gz
– rubygems-3.1.4.tgz

# cygwinパッケージ一覧

– rubygemインストールで必要
– “`ruby“`, “`ruby-devel“`
– bundle installに必要
– “`mysql-devel“`, “`libsqlite3-devel“`
– nokogiriのインストールに必要
– “`libxml2-devel“`, “`libxslt-devel“`

# 各バージョン

| name | version | installation |
| — | — | — |
| ruby | 2.6.4p104 | cygwin |
|

元記事を表示

ActiveStorageをクラウドストレージ(GCS,S3, etc)で使ってた時に処理が遅くなる問題

# 概要

Heroku上で動かしていたRailsアプリの処理が遅かった時の調査メモです。
結論として、画像保存に使用していたGCPのクラウドストレージの部分がボトルネックとなっていました。

# 環境

– Ruby 2.6.3p62
– Rails 6.0.2.2

# 背景

Herokuの無料プランでRailsを使った趣味のWEBサイトを構築運用しています。
当初から処理はあまり早くないものの、SQLに関してもRedisでキャッシュを入れたりしていたので、まぁ無料ならこんなものかと思っていました。

しかしながら、一部のページのみ他のページより早い事に気がつき、何が原因かを調べることとしました。

# 調査

## 調査方法

一般的な方法ですが、下記のコマンドでログを出力させて処理時間を調べる事にしました。

“`bash
heroku logs –tail
“`

デフォルトでRailsはDEBUGログで処理時間を色々出してくれるので、まずはそこを確認する事にしました。

## ログの調査結果

当初はキャッシュしていない部分のSQLが遅いのかと思っていましたが、
S

元記事を表示

NGSシミュレーションの古典的ソフトwgsimで遊ぶ 〜謎の生物プー〜

## はじめに

謎の生物 **プー** それは、**太古から存在するかもしれない 謎の生物**です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/22ec5a45-50d6-e446-324e-7303617d3568.png)
プーの想像図

## wgsimとはなんじゃらほい?

wgsimとはバイオインフォ界の巨星 Heng Liさんが作ったNGSのシミュレーターです。
2011年のソフトですが問題なく動きます。

https://github.com/lh3/wgsim

## インストール

Biocondaを導入している場合は

“`
conda install wgsim
“`

## 〜 謎の生物プー 〜

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/22ec5a45-50d6-e446-324e-7303617d3568.png)

元記事を表示

redirect_toとrenderの違い

##はじめに
私はredirect_toとrenderの違いを理解していなかったために、redirect_backを使用しエラーメッセージを表示をすることができず、悩みました。もし、悩んでいる方がいれば少しでも助けになれればと思います。

##redirect_to
一回指定したアクションを実行して、そのアクションに対応したビューを表示させる
ちなみにredirect_backはredirect_toと同じ動き方をし、ユーザを直前のページに戻すことができます。

##render
アクションを実行せずにビューファイルを表示する

###2つの動き方
・redirect_to   : controller → URL → route → controller → view
・render     : controller → view

###使い分け
・render: ログインや入力形式に失敗した場合など = ただエラーを表示させるだけ
・redirect_to: データ更新/削除が必要な場合    = controllerの処理が必要

元記事を表示

rubyでドローポーカーを作ってみる~実装編3(プレイヤー)~

## 概要

[rubyでドローポーカーを作ってみる~準備編~](https://qiita.com/r12tkmt/items/56a60f2d69226b2bdcf2)

[rubyでドローポーカーを作ってみる~test-unit準備編~](https://qiita.com/r12tkmt/items/48940d0e09a77d210bf2)

[rubyでドローポーカーを作ってみる~実装編1(カード)~](https://qiita.com/r12tkmt/items/175aa66fd91995f13524)

[rubyでドローポーカーを作ってみる~実装編2(役)~](https://qiita.com/r12tkmt/items/cd22e04eb102eabf03cd)

に続いて。

ソース: https://github.com/rytkmt/ruby_poker

今回はカード、役を扱うプレイヤーの実装に入っていきたいと思います。

## プレイヤーの実装

今回もまずは要件を整理してみます。

– 始め5枚のカードをもらう
– 役を判定する
– 任意

元記事を表示

Ruby on Rails レコード検索、無ければ作成 find_or_create_by メソッド

# find_or_create_by メソッドとは?
find_or_create_by メソッドとは、findメソッドとcreateメソッドが合わさったメソッドであり、
引数に渡した条件に該当するレコードをテーブルから検索し
該当するレコードがあれば取得、無ければ作成してくれるメソッド。

# 使い方
**モデル.find_or_create_by(検索条件)**

例:usersテーブルの中からnameが”suzuki”のレコードを取得、無ければ作成する場合

“`ruby
User.find_or_create_by(name: “suzuki”)
“`

元記事を表示

【Ruby】vendor/bundleにgemがインストールされたはずなのに、requireでエラー

#経緯
スクレイピングについて少し学習しようと思い、
[Rubyを使って20分でスクレイピングの大元を作る](https://qiita.com/Coolucky/items/5d8e49f2c52c99c7d3c2)を参考に実装。
「Gemはvendor/bundle配下にインストールするようにします。」とあるので、
指示通りbundle installするときに `–path vendor/bundle` のオプションを追加。

#エラー発生
記事の通りのcodeをmain.rbに書き込み、main.rbを実行すると、

“`
training $ ruby main.rb
Traceback (most recent call last):
2: from main.rb:2:in `


1: from /Users/yusaku/.rbenv/versions/2.6.0/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’
/Users/yusaku/.rbenv/versi

元記事を表示

「RSpecが動かない!」原因はspringだったので調べてみた

あるアプリケーションでRSpecを導入し、いざテストコードを実行したらエラーが出てしまった。
何度見直しても設定や記述に問題はないはずなのに、なぜ動かないのか。。

**原因は「spring」というgemでした。**
下記のコマンドをアプリのディレクトリで入力し、再度テストコードを実行すると正常に作動しました。良かった。

“`
mac@ myApp % spring stop
Spring stopped. ←この表記が出ればOK
“`
ちなみにこのspringはrailsコマンドを入力すると自動で再始動しますのでご安心を。

###このspringというのは何者?
簡単に言えば、railsのキャッシュみたいなものです。
rails newした際に、Gemfileにデフォルトで導入されています。

今回の場合だと、RSpecの導入をする前のキャッシュがたまたま残っており、
その状態でテストコードを実行すると「RSpecなんて使えないよ」っていうエラーが出てしまったようですね。

ちなみにspringの状態を確認するためにはこんな感じで確認できます。

“`
mac@ myApp

元記事を表示

OTHERカテゴリの最新記事