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

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

【Rails】rubocop 導入編(2020年5月版)

# 環境

– ruby 2.6.6
– Rails 5.2.3
– [rubocop 0.82.0](https://github.com/rubocop-hq/rubocop)
– [rubocop-rails 2.5.2](https://github.com/rubocop-hq/rubocop-rails)
– [rubocop-rspec 1.39.0](https://github.com/rubocop-hq/rubocop-rspec)
– [rubocop-performance 1.5.2](https://github.com/rubocop-hq/rubocop-performance)

# インストール

“`ruby:Gemfile
group :development do
gem ‘rubocop’, require: false
gem ‘rubocop-performance’, require: false
gem ‘rubocop-rails’, require: false
gem ‘rubocop-rspec’
end

元記事を表示

rbenv で install ができなかった時の対処法

## 概要
rbenv で新しく別バージョンの Ruby をインストールしたかったが、`install` コマンドを叩いた際に以下のようなエラーが発生。

“`
$ rbenv install 2.7.0
Downloading openssl-1.1.1d.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/1e3a91bc1f9dfce01af26026f856e064eab4c8ee0a8f457b5ae30b40b8b711f2
Installing openssl-1.1.1d…

BUILD FAILED (OS X 10.15.4 using ruby-build 20200401)

Inspect or clean up the working tree at /var/folders/w_/0xyscdr105gdxd26fpl679f40000gn/T/ruby-build.20200503102702.1876.6wZCKR
Results logged to /var/folders/w_/0xyscdr1

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ABC 165 D 床関数

# はじめに
AtCoder Beginner Contest 165 が開催されました。
その D問題でちょっとだけ嵌りましたので、~~復讐~~復習したいと思います。
# 今回のお題
*[AtCoder Beginner Contest 165 D – Floor Function](https://atcoder.jp/contests/abc165/tasks/abc165_d)*
Difficulty: 505

今回のテーマ、床関数
# Ruby
入力例1をエクセル先生で確認します。
20200503.png
丁度 **7** で周期していることが分かります。
よくよく考えれば、**7** で割っているのでそうなりますので、n が b – 1 以上の場

元記事を表示

タンパク質の立体構造をSketchUpでモデル化 その1

#はじめに
Sketchupという3Dモデル作りが可能なソフトウエアがあります。タンパク質の立体構造データをもとに、3Dモデルを作ろうと思いましたが、APIがRubyなのです。Rubyを使って数年前にモデルを作って遊んだことが1回あるだけで、文法などなにもかもすっかり忘れてしまった状態です。調べたことをここで記述しながら、作成していきたいと思います。

タンパク質の構造データはPDBフォーマットものもを使用しました。具体的には、コロナウィルスのキャプシドタンパク質です。こちらも初めてフォーマットを見ました。

次に思い立った時に、この記事さえ見れば「rubyでSketchup」がまたできるように、個人用の備忘録として記述しますが、ご意見、コメントなどいただけますと幸いです。

#PDBのデータフォーマット
http://www.wwpdb.org/documentation/file-format
https://cdn.rcsb.org/wwpdb/docs/documentation/file-format/format3.1-20080211.pdf
#実際のデータ
長いので記事

元記事を表示

MVCモデルをもう一度振り返ろう!

#MVCモデルをもう一度振り返ろう!
MVCモデルとはモデル(M)、ビュー(V)、コントローラー(C)の3つに役割を分けて開発を行う設計パターンです。
railsなどもMVCモデルに基づいて作られています。

##MVCモデルのそれぞれの役割

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/629620/068ffd73-21b4-e199-7b2d-187a0e72aa86.png)

MVCモデル参考イメージ出典:https://www.katonobo.com/entry/what_is_MVC

・モデル(model):表示や入力に関連しない処理
・ビュー(view):表示や入力に関する処理
・コントローラー(controller):ビューとモデルの橋渡し役

という役割とされています。
役割を聞いただけですとよくわからなかったのですが、私のイメージですと、、、
・モデルはデータをコントローラーに引き渡す役
・ビューは見た目の役
・コントローラーは上記の理解

といった解釈をして

元記事を表示

備忘録 render partialで部分テンプレートを表示しよう

# 共通のビューを部分テンプレートを使って表示

renderメソッドのパーシャルオプションを使って共通部分を表示しましょう。

部分テンプレートとしてビューファイルを作成する時は \_hogehoge.html.erbのようにファイル名の前に_(アンダースコア)をつける必要があります。
次のように書くと部分テンプレートをビューに表示できます。

“`ruby
render partial: ‘hogehoge’
“`

別ディレクトリに部分テンプレートのデータがある場合は

“`ruby
render partial: ‘ディレクトリ名/hogehoge’
“`

で呼び出せます。

### localsオプション

localsオプションを使うと部分テンプレート内で使う変数の定義をすることができます。

“`ruby
render partial: ‘ファイル名’,locals:{ ‘部分テンプレート内で使う変数’: ‘変数に入れる値’ }
“`

変数は複数指定することも可能です。

“`ruby
render partial: ‘ファイル名’, locals:{

元記事を表示

備忘録 Flashメッセージを使いこなそう

# Flashメッセージで次のリクエストにデータを伝える

railsのredirect_toメソッドにflashを使うことで次のリクエストにデータを伝えることができる。(同じリクエスト内でもできるが後述)

“`ruby
redirect_to リダイレクト先のURL, notice: ‘ここのデータを送れるよ!’
“`

次のように2行で書いても、同じ。

“`ruby
flash[:notice] = ‘ここのデータを送れるよ!’
redirect_to リダイレクト先のURL
“`

redirect_toのオプションに渡せるflashのキーはデフォルトでは:noticeと:alertのみとなっている。
次のようにflashキーの値にオリジナルのデータをハッシュで渡すことでプチカスタマイズができる。

“`ruby
redirect_to リダイレクト先のURL, flash: {hogehoge: ‘ここのデータを送れるよ!’}
#=> 次のリクエストではflash.hogehogeで参照できる
“`
また、noticeとalertは以下のようにメソッドの形でデ

元記事を表示

Railsのhtmlエスケープ方法比較

Ruby on Railsでユーザが入力したテキストを改行コードを含めて、そのまま表示したい場合があります。或いは、htmlのタグを完全に外したり、一部有効なまま残したりしたい場合もあります。

そうした場合のアプローチ比較のつもりで検証したのですが、ほとんどの場合、そのまま(何もしない)か、`sanitize`を使えば良いのではないかと思います。

“`erb

<% text = "1\n2\n3 >= a” %>
<%= text %> <%# そのまま(タグはエスケープされる) %>


<%= h(text) %> <%# そのままと一緒(使う意味ない?) %>


<%= simple_format(text) %> <%# 勝手に改行 & pタグが付く(お好みで..) %>


<%= strip_tags(text) %> <%# タグが消える %>


<%= sanitize(text) %> <%# 危ないタグだけ消える %>


<%= sanitize(text.gsub("\n","

元記事を表示

Kinx アルゴリズム – ヒープソート

# アルゴリズム – ヒープソート

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。「プログラム=アルゴリズム+データ構造」。アルゴリズムの実装例をご紹介。

元ネタは「C言語による(30年経っても)最新アルゴリズム事典」。今回はソート(ヒープソート)です。

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

アルゴリズムと言えばソート。ヒープソート。

## ヒープソート

元記事を表示

5/2 新たな知識

###buildメソッド
親モデルに属する子モデルのインスタンスを新しく作成する

参考記事:https://qiita.com/tsuchinoko_run/items/d671ea840bc0bfa90186

###merge!メソッド
ハッシュを結合する方法
mergeメソッドとmerge!メソッドの違いに注意

参考記事:

Rubyのmergeメソッドでハッシュを結合する方法【初心者向け】

元記事を表示

gem, bundlerを自分なりに解説してみる

##はじめに
今回が初投稿です。Progateである程度勉強した次はRailsチュートリアルだー!と思い第1章から進めるもいきなりgem?bundle?とよくわからない単語が…。言われるがままにコマンドを入力していくも結局これ何やってるんだろうと思ったので自分なりに調べて解説してみます。

##gemとは
まず、gemという単語には以下の2つの意味があるようです。
・Rubyライブラリを管理するシステム(RubyGemsのことを指す)のコマンドの名称のこと。
・それぞれのライブラリのこと

ライブラリとは、いちいち0からプログラムを組むのは面倒なので、汎用性の高い機能をひとまとまりにしたものです。つまりgemとはこのライブラリを管理するツールでもあるし、ライブラリそのものを指す言葉でもあるということですね。驚くことに、今学習しているRails、これから説明するbundlerもgemのなかのひとつのようです。

##bundlerとは
先程、RubyGemsはライブラリであるgemを管理するシステムと説明しましたが、最近では「bundler」というライブラリ管理ツールを使うことが多いよう

元記事を表示

RustでAES-256-CBC暗号化

# 目的
RustでAES-256-CBCの暗号化と復号化をしてみます。試しにRubyで復号化してみます。
暗号化文字列の先頭には16byteのIVを格納しています。

# Rustで暗号化復号化
“`rust:Cargo.toml
aes = “0.3.2”
base64 = “0.12.0”
block-modes = “0.3.3”
bytebuffer = “0.2.1”
rand = “0.7.3”
“`

“`rust:main.rs
use aes::Aes256;
use block_modes::{BlockMode, Cbc};
use block_modes::block_padding::Pkcs7;
use rand::seq::SliceRandom;

type AesCbc = Cbc;

// ランダム文字列の元
const BASE_STR: &str = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789”;

// IV用にランダム文字

元記事を表示

TECH CAMP 4週目

TECH CAMPも4週目を終え、課題であるChat-space制作の実装もひとまず完了。

【学習内容】
・ユーザー管理機能実装
・グループ作成編集機能実装
・メッセージ送信機能実装
・テスト
・非同期通信機能実装
・インクリメンタルサーチ実装
・自動更新機能実装

ところで、プログラミング学習時に皆さんは音楽を聴きますか?集中力を高める為や、気分を上げる為に聴く方は多いでしょう。私はDREAM THEATERというアメリカのバンドが好きでよく聴いています。自分自身ギターを弾くのですが、このDREAM THEATERは高度な演奏力や音楽理論を駆使した楽曲の組み立て方が魅力的で、特に楽器演奏者にファンが多いようです。自分もそれに影響を受けて10代の頃は楽典やなんかで音楽理論をかなり勉強し、今でも曲を作っています。
実は5月に来日コンサートがある予定だったのですが、このご時世もちろん延期。しかも、行く予定だった福岡公演のみ中止という悲しい現実が‥。チケット払い戻ししました‥(良い席取れてたのに‥)。その反動で今週は学習中かなり聴きましたね。

・ユーザー管理機能実装
gemのdevise

元記事を表示

#Ruby Rspec expect with keyword args example

“`rb
require “rspec”

class Foo
def self.run(x:, y:)
Bar.run(x: x, y: y)
end
end

class Bar
def self.run(x:, y:)
false
end
end

describe do
subject { Foo.run(x: “X”, y: “Y”) }

describe do
before do
expect(Bar).to receive(:run).with(x: “X”, y: “Y”).and_return true
end

it { is_expected.to be true }
end

describe do
let(:param) { { x: “X”, y: “Y” } }

before do
expect(Bar).to receive(:run).with(**param).and_return true
end

it { is_

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ARC 066 C 繰返し二乗法 ハッシュ

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。

# 今回のお題
*[AtCoder Regular Contest 066 C – Lining Up]()*
Difficulty: 927

今回のテーマ、繰返し二乗法 と ハッシュ
# Ruby
これは左右対称な問題ですので、仮にハッシュに代入した場合、奇数名では`2221222`、偶数名では`22222222`の様なvalues配列になると想定されます。
それ以外の場合は、並び方がないと判断できます。

また、以前投稿しました *[Ruby と Perl と Java と Python で解く AtCoder ATC 002 B](https://qiita.com/superrino130/items/adbb485637e45a024fa1)

元記事を表示

GEEK JOB 体験してきて 10連ガチャSSR確定をつくった

require ‘json’

data = JSON.parse(gets)

gatya =[]

9.times do
num = rand(100)

if num < 10 puts data["2"] gatya.push(data["2"]) elsif num < 30 puts data["1"] gatya.push(data["1"]) else puts data["0"] gatya.push(data["0"]) end end if gatya.include?(data["2"]) num = rand(100) if num < 10 puts data["2"] gatya.push(data["2"]) elsif num < 30 puts data["1"] gatya.push(data["1"])

元記事を表示

rails s が実行できなくて困ってます。力を貸してください

スクリーンショット 2020-05-02 16.55.50.png
gemやbundleをアップデートしてもrails s を実行したときにこのようなエラーが出ます。
解決方法を教えて下さい。お願いします。

元記事を表示

[Rails]パスワードのバリデーションに正規表現を使用してみた[format]

#はじめに
今回は、正規表現でパスワードのバリデーションをしてみました。
railsではformatというバリデーションヘルパーで正規表現を使用することができます。
求めるパスワードの条件として「半角6~12文字で英大文字・英小文字・数字それぞれ1文字以上含む」でないと登録できないようにしました。
実行結果はRSpecのモデルのテストで確認していきます。

###参考にさせていただいた記事等
[言語別:パスワード向けの正規表現](https://qiita.com/mpyw/items/886218e7b418dfed254b)
[パスワード向け正規表現 /^(?=.*?[a-z])(?=.*?\d)[a-z\d]{8,100}$/i を解読する](https://qiita.com/momotaro98/items/460c6cac14473765ec14)

###前提条件
すでにユーザー作成機能作成を作成済みとします。
私はrailsチュートリアルで作成したログイン機能を使って進めました。
完成したもの先に記載するしておきます。

“`ruby:/app/model/user.

元記事を表示

#Ruby ( Rails ) ActiveInteraction receives keyword args or hash ?

ActiveInteraction seems various type args

“`rb
require “active_interaction”

class ServiceClass < ActiveInteraction::Base string 😡 string :y def execute p x p y end end # OK # Keyword args ServiceClass.run!(x: "X1", y: "Y1") # OK # Convert Hash to keyword args ServiceClass.run!(**{ x: "X2", y: "Y2" }) # OK # Hash args # No Warning happens ServiceClass.run!({ x: "X3", y: "Y3" }) # OK # Not Symbol string key ServiceClass.run!({ "x" => “X4”, “y” => “Y4” })

# OK
# Not symbo

元記事を表示

rake routes

#rake routes
この記事は、rake routesの理解を深める為の記事になります。
また、初学者による記事の為間違い等ある可能性がありますが、ご指摘頂けると喜びます。

まず、rake routesとは、resourcesメソッドを使用した場合など、ルーティングという各アクションを呼び出す為のパスワードの一覧を表示させる為に
使うコマンドに当たります。

※resourcesってなに?って方は別記事読んでみましょう♩

#※使い方
mac使用ターミナルにて、パスワード一覧を表示したいデータに作業ディレクトリを合わせ 「rake routes」と記載するだけです。
なにも出なかった場合、スペルミスかroutes.rbに定義していないかです。

#※一覧表
私は、この表の意味が全くわからなかった。
なので、この記事を書いております。
スクリーンショット 2019-09-27 2.34.30.png

  • OTHERカテゴリの最新記事