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

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

全ての約数を列挙する `Prime#each_divisor` を実装

Rubyの [`Prime` クラス](https://docs.ruby-lang.org/ja/latest/class/Prime.html)には、素数を列挙したり素因数分解するメソッドが実装されている。一方で**約数に関するものが無い**。約数を列挙したり、その個数を数えたりしたかったので、素因数分解のメソッドを利用して実装してみた。

“`ruby:実装
require ‘prime’

class Prime
def each_divisor(n, &block)
pf = prime_division(n)
num = -> { pf.inject(1) { |prod, (_, exp)| prod * exp.succ } }
Enumerator.new(num) { |y| __each_divisor__(1, pf, &y.method(:<<)) } .tap { |enum| enum.each(&block) } end private def __each_divisor__(d, ary, &bloc

元記事を表示

本番環境での表示に関して

##オリジナルアプリの開発中ですが、本番環境にて不具合が出ているので投稿します。##
###環境###
Ruby 2.6.3
postgresSQL
Rails 6.0.2.2

本番環境の対象画面
https://dry-hollows-95968.herokuapp.com/shops/new

開発環境の対象画面
https://gyazo.com/ce3c05aef67259b2b2057ab08d9d5393

本来は開発環境の様にセレクトボックスから選択できる様に表示したいです。

セレクトボックスの中身は各モデルの初期データから読み込む様に設定したつもりです。

開発環境のデータベースもpgで作成していたので、本番環境で使えない記述の仕方などの線も薄いのかと思ってしまって、時間が取られてしまっています。

原因はどのようなものでしょうか?

お忙しいとは思いますが、ご確認よろしくお願いいたします。

“`new.ehtml.rb

translation missing〜 エラーについて

## はじめに
作成した個人アプリのテストを行っていた際にエラーが出てテストに失敗しました。
調べて解決出来たので、備忘のために残しておこうと思います。

### エラー内容

Userモデルのバリデーションのテストをしていたら以下のエラーが発生し、テストに失敗しました。

“`
translation missing: ja.activerecord.errors.models.user.attributes.nickname.blank
“`

調べたところ、エラー内容としてはdeviseを日本語訳したファイルがないというエラーのよう。
(gem deviseを使ってユーザー管理機能を実装)

### エラー原因

自作アプリで、ページネーションを日本語表示にするために
config>application.rb に ”config.i18n.default_locale = :ja”と
日本語化する設定をしていたのですが、deviseのエラーメッセージに関しては日本語化していませんでした。
そのため、deviseの日本語のファイルがないよとエラーになってしまった

元記事を表示

-これからポートフォリオを作成する方へ- 設計図の作成方法:前半

ポートフォリオを作成する際に、何から始めれば良いかわからない・・・という方に向けて。
第1歩目として設計図を作成する事を強くオススメします。理由は以下の通りです。
>
・自分が今どの部分を実装しているか把握が容易になるため、迷子にならない![スクリーンショット 2020-04-09 23.08.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553621/f5011286-f054-51fa-7f89-fd66f9bfa52c.png)

・少しずつ目標に近く感覚を可視化でき、モチベーションの維持に繋がる
>

そのためにどのようなツールを使用し、どのような物を作成すれば良いかまとめました。

#●使用ツール
こちらはCacooというサービスをオススメします。
https://cacoo.com/

会員登録から一定期間は無料ですので、無料期間中にさくっと作ってしまいましょう。
またPDF出力が可能なので、作成した設計図をPDFとして保存してしまえば無料期間中だけでも事足ります!

#●作成すべき物

元記事を表示

2020年版 VSCodeの良さげな拡張機能紹介

日々VSCodeをより気持ちよく使用するために拡張機能の探求は欠かせません。
今回は私の独断と偏見で良さげな拡張機能を紹介します。

# 見た目編

## Peacock
https://marketplace.visualstudio.com/items?itemName=johnpapa.vscode-peacock
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/199056/c36a6ecc-4c1b-f390-2de0-f9eda473805d.png)

VSCodeのウィンドウをおしゃれにできます。
私は複数の環境(プロジェクトやプログラミング言語)を使い分けるので、ウィンドウごと色を変えることで気持ちも一緒に切り替えています。

![ウィンドウ](https://github.com/johnpapa/vscode-peacock/raw/master/resources/hero.png)
公式より拝借

## Ubuntu VSCodeTheme
https://mar

元記事を表示

Rails メール自動配信機能をActionMailerとwheneverを使用して実装する

Railsで毎日メールを送るためのバッチ処理を、`ActionMailer`とgemの`whenever`を使用して実装しました。

##手順
1. gem `’whenever’`導入
1. `schedule.rb`にバッチ処理を記述
2. `schedule.rb`の内容を登録
1. メールを送信するメソッドを定義
2. viewに送信するメール本文を作成
3. logファイルを確認して実行されているか確認

##環境
ruby ‘2.5.7’
gem ‘rails’, ‘~> 5.2.4’, ‘>= 5.2.4.1’

##前提
1. Userテーブルにemailカラムがあること
1. `ActionMailer`で送信するサーバーの設定が出来ていること
2. メール送信するために必要な`ApplicationMailer`を継承するクラスを作成していること

※ (`UserMailer`という名前で作成済)

## 1. gem `’whenever’`導入

`’whenever’`って?
自動的にメール送信するなど、バッチ処理を行うためにはcronというものを使ってc

元記事を表示

【初心者でもできる】Rubyで簡単なガチャアプリを作ってみた

学習の段階で作成したメモアプリを応用して、よくあるソシャゲのガチャっぽいアプリをRubyで作ってみました。
あくまでもガチャが回せるだけのものなので、表記も使っているものもごくシンプルです。
初心者の方でも作成できるので、参考にしていただければ幸いです。

仕様

・単発ガチャ、10連ガチャを回すことができる。
・レアリティはレア,アンコモン,コモンの3段階。
・レア=10%,アンコモン=30%,コモン=60%の確率で引ける。
・R以上とUC以下で引けた時のメッセージが変わる.
・繰り返しガチャが引ける

使用したメソッドなど

以下のものです。
・配列
・gets
・puts
・sample
・times文
・if文(if,elsif,else)
・while文
・比較演算子(今回使ったのは○○以上、□□以下、AとBは等しい、の3種類)

パーツ作り

では、必要なパーツを作っていきます。
まずはガチャの基礎となる「ガチャを引く」というアクションを確認します。

ガチャ本体とガチャの中身とガチャを引くアクション

実際

元記事を表示

Kinx ライブラリ – Double

# Double

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。言語はライブラリが命。ということでライブラリの使い方編。

今回は Double です、… と言いつつ、Double 組み込み特殊メソッドは少ないので、短い記事です。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-G/kinx)
* Pull Request 等お待ちしております。

## Double 特殊オブジェクト

Double オブジェクトに対して関数定義する

元記事を表示

Railsのscopeを読む

Railsのscopeのソースコードを読んでいきます。

“`
u = User.new(name: ‘sample name’)
“`

scopeを読んでいくために、上記のようなオブジェクトをサンプルとして作成します。

“`ruby
1: class User < ApplicationRecord 2: 3: binding.pry => 4: scope :recent, -> { order(id: :desc).limit(5) }
5: end
“`

中を読んでいきます。

“`ruby

165: # We are able to call the methods like this:
166: #
167: # Article.published.featured.latest_article
168: # Article.featured.titles
169: def scope(na

元記事を表示

可読性 のある書き方

##モデル
人の年齢を表すカラムに「歳」を加えたり、重さを表すカラムに「キログラム」を加えるメソッドは、ビューでのみ使用される見た目を整えるロジックです。このような見た目に関わるロジックは、ヘルパーかデコレーターに記述します。

“`
# ☓:ビューでしか使用しないメソッドをモデルに定義している

# 例) Userモデルにcreated_atを年, 月, 日の形に変換するメソッドを定義している
class User < ApplicationRecord def adjust_created_at created_at.to_date.strftime("%Y年%m月%d日") end end # ◯:ヘルパーファイルにビューで使用するロジックを定義している module ApplicationHelper def set_created_at(created_at) created_at.to_date.strftime("%Y年%m月%d日") end end # ◎:ビューで使用するロジックのうち、表示フォーマットを整えるものを、Drap

元記事を表示

Ruby AtCoder向けVSCode設定

# はじめに
普段は、***Perl*** で *[AtCoder](https://atcoder.jp/home)* を楽しんでいます。
しかし、いつ何時 *Perl* がロックダウンされるかもしれませんのでそれに備え、***Ruby*** の環境を整えたいと思います。

# Ruby to Perl
*Ruby* のロックダウンを心配されている方は、
*[Perl Git による入園式](https://qiita.com/superrino130/items/cc2ca6c6afc2b41330e6)*
*[PerlのAtCoder向けVSCode設定(tasks.json)](https://qiita.com/superrino130/items/7025bc0f0ac7966ba193)*
にて、簡単に環境構築できます。
# 構築順
**VSCode インストール**
*[Visual Studio Code (Windows版) のインストール](https://qiita.com/psychoroid/items/7d85ae6bade4a67aedb1)*

**

元記事を表示

#4 Ruby?うん楽しいよ?【ちょっとマニアック】

こんにちは、あつぎです:relaxed:

プログラミング言語のRuby楽しいです。
javaやCから入った自分の感想なんですが「なんだこのシンプルでわかりやすい言語は…」と、絶望を通り越して感動するレベルでわっかりすいんですな。

そこで、もっとやりたい…と思い、progateから卒業しつつ開発環境を作ろうと思います。
簡単に言うと、授業をただ受けてる状態から、自分で道具を使って実際に作ってみるみたいな感じです。

#■Rubyのオススメ開発環境は何?
初心者なので、まずどこで開発したらいいのかわかりませんね。
そこでGoogle先生に、詳しく教えてもらいました:pray:
もう大好きです、Google。

さて、Rubyの開発環境でおススメなのは、3つらしいです。

|IDE| よさげな部分| 悩むところ |
|—|—|—|
|Eclipse (+RadRails) | 学習コスト低め |Javaやってた時と代わり映えしない |
|RubyMine |情報量が豊富だからググればよさげ | 有料か… ?|
|VS Code |今人気。使ってるだけで最前線感バリバ

元記事を表示

rspecで実行している動作をbinding.pryを確認する方法【メモ】

“`ruby
$ pry(..)> val
“`
have_content()メソッドでビューのテストもしている場合、テストでは画面が出てこないので、変数の中身がわかるだけではデバッグしようがない。

そんなときは今見ているURLを確認。なんらかの原因で違うURLを見てる場合もある。

“`ruby
$ pry(..)> current_url
“`
URLは問題ないとなれば、実際にHTMLをチェック。

“`ruby
$ pry(..)> page.html
“`
か、もしくはテキストだけをチェックもできる。

“`ruby
$ pry(..)> page.text
“`

[Capybaraチートシート](https://qiita.com/morrr/items/0e24251c049180218db4)

元記事を表示

Windows10でのRailsの導入がうまくいかず、WSLを用いた話

#はじめに
Windows10でRailsの環境構築をしたところ、`rails server`コマンドを実行したときにページをうまく表示できなかったので、WSLを用いることにしたときの備忘録です。

#環境

– Windows10(64bit)
– Surface Pro 4
– Ruby 2.6.5

#Windows10での環境構築(失敗)
結局解決せずに諦めたので、興味がない方は読み飛ばしてください。

まず gem 経由で Rails をインストールします。

“`
$ gem install rails -v 5.0.7.2
“`
Rails プロジェクト用のディレクトリを作成し、そのディレクトリに移動してプロジェクト`new-app`を作成します。

“`
$ mkdir workspace
$ cd workspace
$ rails new new-app
“`
`new-app`ディレクトリに移動して`rails server`を実行したところ、次のエラーが発生しました。

“`
cannot load such file — sqlite3/sqli

元記事を表示

素人がWebサービスを作る備忘録(実装編)①

#はじめに
今回は[前準備編](https://qiita.com/bArUsan1Gou/items/28c60172bb840299cea7)、[設計編](https://qiita.com/bArUsan1Gou/items/a8e86bd31a1e141be47e)の続きです。そちらに筆者のスキルレベルやこの記事の目的などが書いてありますので、先にお読みください。

#実装にあたって
ここから実装に入っていくわけですが、稚拙な設計となっている為、かなりの回数の手戻り作業が発生することが見込まれます。その辺りもうまくいかなかった理由と改善策をまとめつつまとめていきたいと思います。
そして、実装にあたり個人的にまとめておきたいと思った昨日の追加などは別途記事にしてまとめていきたいと思います。(その方があとで見返すのとかも楽だし、、、)

そして差し当たり、
 ・ユーザー管理機能
 ・投稿機能
 ・投稿一覧、投稿詳細機能
 ・画像ファイルアップロード機能
 ・ページネーション機能or無限スクロール機能
 ・DBテーブルのリレーション管理
 ・単体、統合テスト

この辺のrailstu

元記事を表示

Rails入門5: deviseのユーザー情報を利用しよう

Rails入門5: deviseのユーザー情報を利用しよう

———————————————————————————-

#01:掲示板でユーザー情報を使おう
このレッスンでは、Scaffoldで作成した1行掲示板に、deviseを使ってユーザー認証機能を追加します。まずは、どのような機能を作るのか整理しましょう。

このレッスンで作る掲示板
– deviseで作成したユーザー認証に、1行掲示板を組み合わせる
– ログインしている時だけ投稿できる
– 投稿者名をdeviseのユーザー名にする
– 自分の投稿だけ、編集・削除できる

作成手順
– ログイン時だけ投稿できる掲示板を作る
– 1行掲示板の記事に、Emailを表示する
– Userモデルに、nameカラムを追加する
– Userモデルに、ユーザー名を保存する
– 投稿時にログインユーザー名を保存
– 自分の記事だけを編集・削除

参考になるWebページ
– [ASCII.jp:ユーザー認証でなにができる

元記事を表示

Rails入門4: deviseでユーザー認証してみよう

Rails入門4: deviseでユーザー認証してみよう

#01:ユーザー認証機能を理解しよう
このレッスンでは、Railsのユーザー認証用ライブラリdeviseを使って、Webアプリケーションで必要になるユーザー認証の基本を学習します。
まず初めに、ユーザー認証の概要と、deviseの役割を理解しましょう。

ユーザー認証とは
相手を確認してアクセスを許可する仕組みを「ユーザー認証」と呼びます。

ユーザー認証
– 認証:Authentication 本人かどうか確認する
– 許可:Authorization  認証の結果をあたえ、利用許可

deviseの主な機能
deviseは、ユーザー認証の仕組みをRailsに提供するライブラリです。

– サインアップ:ユーザー情報と暗号化したパスワードをデータベースに保存
– メールによるユーザー確認
– ログイン:メールとパスワードによる認証
– クッキーによるセッション管理
– ユーザー追跡:ログイン回数、日時、IPアドレスなど
– パスワードリセット
– ユーザーのロック
– OmniAuth対応:TwitterやFa

元記事を表示

Rails入門3: Railsサービスを機能アップしてみよう

Rails入門3: Railsサービスを機能アップしてみよう

#01:RailsにBootstrapを導入しよう
このレッスンでは、お勧めのお店を投稿できる「ランチマップ」アプリのデザインを整えて、スマートフォン対応と日本語表示を実現します。

まず初めに、HTMLテンプレートのBootstrapを導入します。

RailsのWebページにアクセスするには
– paizaの場合: New Broweserタブに表示されたアドレスに「:3000」を追加する
例 https://xxx.paiza-app.cloud:3000
– 作成した掲示板にアクセスする:https://xxx.paiza-app.cloud:3000/categories

– 自分のPCでrailsを起動する場合: ブラウザで「http://localhost:3000」にアクセスする

※ xxxには、コンテナ名が入ります

RailsのWebサーバーを停止するには
「CTRL」キー(コントロールキー)を押しながら「C」のキーを押します

RailsにBootstrapを導入する
Gemfileを修

元記事を表示

Rails覚書2: 実用的なRailsサービスを作ろう

Rails入門2: 実用的なRailsサービスを作ろう

#01:プロジェクトとウェルカムページを作ろう
このレッスンでは、お勧めのお店を投稿できる「ランチマップ」アプリをRuby on Railsで作ってみましょう。まず初めに、プロジェクトとウェルカムページを作ります。

今回使ったLinuxコマンド
現在のディレクトリ(フォルダ)の位置を確認する。
$ pwd

ファイルやディレクトリの情報を表示する。
$ ls

lunchmapディレクトリに移動する。
$ cd lunchmap

今回使ったRailsコマンド

lunchmapプロジェクトを作成する。
$ rails new lunchmap

Rails用のWebサーバーを起動する
$ rails s -b 0.0.0.0

ウェルカムページを生成する
rails generate controller welcome index

ウェルカムページを修正する
app/views/welcome/index.html.erb

Lunch Map

Tasty meal on your pla

元記事を表示

[Rails]テンプレートエンジン(haml.slim)の導入方法と書き方

#パフォーマンス比較グラフ

![20170910222126.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/4b6e7e1d-3fd4-70c7-02a0-2c865e534d5b.png)

# erb(比較用)

“`erb:~.html.erb

Users

<% @users.each do |user| %>

Name Email
<%= user.name %> <%= user.email %> <%= link_to 'Show', user %> <%= link_t