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

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

Railsのvalidateを自作する

# はじめに
[前回の続き](https://qiita.com/smbbc20/items/952a33501343614f197f)で「Ruby on Rails 5 速習実践ガイド」のアウトプットを行うための投稿です。
今回は、モデルのバリデートを自作する方法を書いていきます!例として、Taskモデルのnameカラムに、ハイフンが含まれないようなvalidateを作成します。

# 目次

1. [自作validateのメソッドを作成](#Chapter1)
1. [自作validateを呼び出す](#Chapter2)
1. [エラーメッセージを表示する](#Chapter3)
1. [参考文献](#reference)



# 自作validateのメソッドを作成

“`task.rb
private
def validate_not_including_hyphen
errors.add(:name, ‘にハイフンを入れないでください!’) if n

元記事を表示

Google Recruit Problem

# Document Links

– [マルチスケールシミュレーション特論まとめ](https://qiita.com/evendemiaire/items/25f459daa57ab8875ba6)
– [Google recruit problem, exp and prime](https://qiita.com/daddygongon/items/ba94b0f2a73990fc6a07)

# Google Recruit

## Google Recruit Problemとは

**{e(自然対数の底)の値で連続する10桁の数のうち,最初の素数}を求めよ.ただしeは200桁まで.**

2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338

元記事を表示

Thor & Rubocop

# Document Links

– [マルチスケールシミュレーション特論まとめ](https://qiita.com/evendemiaire/items/25f459daa57ab8875ba6)
– [チャート式ruby-appendix-VI(thor, rubocop)](https://qiita.com/daddygongon/items/19e58f757fab197bc347)

# Thor

## Thorの基礎知識

ThorとはCLIの作成を支援するGemらしい.

詳しくは実際に扱いながら学ぶ.

また,有志の力を借りる

– [Thor入門 – RakeからThorへ -](https://qiita.com/yatmsu/items/5ba7016db33c13d7a882)
– [Ruby の CLI ツールの作成を支援する、 thor gem の基本について。](https://qiita.com/tbpgr/items/10a5c236cfb528c76ef5)

## CLIを自作

まずはthorをinstallする

元記事を表示

Class化について

# Document Links

– [マルチスケールシミュレーション特論まとめ](https://qiita.com/evendemiaire/items/25f459daa57ab8875ba6)
– [チャート式ruby-VI(hello class)](https://qiita.com/daddygongon/items/969ad5112878f6dab844)

# Class化

## 復習

前回の記事でClass化について少し触れたが,わかりやすいように復習がてら記述

オブジェクト指向において,鍵となる考え方が,

– 隠蔽(capsulation)
– 継承(inheritance)
– 多態(polymorphism)

の3つです.

Methodはある種の隠蔽だけど,更に言語システムとして徹底したのが, **Class** であるとのこと.

前回,その例として

“`ruby:
def puts_hello name
puts “Hello #{name}.”
end

def gets_name
name = A

元記事を表示

フィボナッチ数列を(メモ化)再帰関数で

\![macOS-11.1]() \![ruby-2.7.2p137]()

# Preface (はじめに)

再帰関数を用いてフィボナッチ数列を出力する.

# Fibonacci

フィボナッチ数を返す関数fibは以下のような関係にあります.

“`
fib(n) = fib(n-1)+fib(n-2)
0 1 1 2 3 5 8 13 21 …
“`

### fib(0) = 0

フィボナッチ数列の初項fib(0)は0と定義されているので

“`ruby:fibonacci.rb
def fib(n)
if n==0
return 0
end
end
“`

とします.

このテストに前回作った[assert\_equal](https://qiita.com/k6e4n0h0n8f9ooO/items/9d12aff6

元記事を表示

[Rails]日本語表記にする方法

# はじめに

今回は日本語表記にする方法を学びました。

こちらも慣れるためにアウトプットしていきたいと思います。

やり方は色々あると思いますがまずは入門として。

# i18n

多言語対応のため国際化機能です。

internationalization(国際化の意味)が18文字ある事から「i18n」と言います。

覚えやすい!!

# controllerの記述

URLのオプションに合わせて表示言語を切り替える様にします。

“`ruby:application_controller.rb
class ApplicationController < ActionController::Base before_action :set_locale def set_locale I18n.locale = params[:locale] || I18n.default_locale end def default_url_options(options = {}) { locale: I18n.locale

元記事を表示

[画像付き解説]Github初学者が、gitignoreについてまとめてみた

#概要
最近、とあるエンジニアさんに成果物のコードレビューをお願いした際に、「githubにpushしたファイルが多すぎて確認出来ない!共同開発する場合はgitignoreを活用した方がいい」と教えて頂いたのですが、gitignoreって何?状態だったので、調べて学んだことをまとめてみました。

##.gitignoreとは
Githubのリモートリポジトリで管理しないディレクトリ、ファイルを指定することが出来るファイルのことです。
.gitignoreファイルに指定したファイル/ディレクトリは、git addコマンドの対象から除外されるようになり、Githubのリモートリポジトリに送信されなくなります。

###どんなメリットがあるの?
①不要なデータがpushされないため、第三者がコードを見る時に確認しやすくなる
 ・OSや各自ローカル環境で自動生成されるもの(ex. Macの.DS_storeファイル)
 ・ローカル環境で使うがリモート環境には必要のないもの(ex. テストでしか使用しない画像)
 ・コンパイル、ビルドした時に作成されるデータや実行形式ファイル(ex. プロジェク

元記事を表示

Railsでフォロー機能を実装する

# なぜこの記事を書いたのか
Railsでのフォロー機能について説明している記事はたくさんあります。

しかし、「自分**が**フォローしているユーザーの一覧ページ」と「自分**を**フォロしているユーザーの一覧ページ」までの実装手順を説明している記事は少なく感じました。

この「フォロー一覧」と「フォロワー一覧」ですが、**Relationshipテーブルのカラムをよく考えて命名**しておかないと、ややこしくなることがあります。

“`following“`, “`follower“`, “`follow“`, “`followed“`など様々な命名方法が記事によって混在していますが、一番混乱しにくい命名方法で解説されている記事が少なかったため、改めて記事を作成することにしました。

まず結論から言います。

この記事では、**フォローする側は“`following“`**、**フォローされる側は“`follower“`**としておくとよく覚えておいてください。

普通の感覚だと、『フォローする側が“`follower“`じゃないの?』と感じるかもしれませ

元記事を表示

Ruby3.0.0をソースからビルドしてみた

2020/12/25にリリースされたRuby3.0.0をWindowsのWSLを使い、まっさらなUbuntu上でbuildしてみました。

# 環境
●ハードウェア環境
– Lenovo ThinkPad T460s

●ソフトウェア環境
– Windows 10 Home (バージョン20H2 OSビルド19042.685)
– Ubuntu 20.04 LTS(WSL上)

# 所要時間(ざっくり)
– WSL環境構築(Ubuntuアプリ取得とアカウント設定含む):約10分
– Ubuntu初期設定:約10分
– Rubyソース ダウンロード:約5分
– Rubyソース ビルド:約90分

# 手順
## WSL環境構築(Ubuntuアプリ取得とアカウント設定含む)
Microsoftのドキュメントに従って構築しました。
[WSLドキュメント > クイックスタート > WSL をインストールし、WSL 2 に更新する](https://docs.microsoft.com/ja-jp/windows/wsl/install-win10)

## Ubuntu初期設定
ビルドに必要な

元記事を表示

assert_equalを作って簡単にテストを書けるようにする

\![macOS-11.1]() \![ruby-2.7.2p137]()

# Preface (はじめに)

テスト駆動型開発(TDD)では簡易的なテストを何度も繰り返し開発を進めることが基本です.

本記事では, ある式や値が想定のものと同じかどうかを確かめる関数assert\_equalを作り, それを用いて簡単なテストコードを作ろうと思います.

# Assert

## Equal

まずは`expected`と`result`の値が等しいか確かめる

“`ruby:assert_equal.rb
def assert_equal(expected, result)
return expected == result
end

p assert_equal(1, 1)
“`

“`
> ruby assert_equal.rb
-> tr

元記事を表示

Recursive Fibonacci

# お題:Fibonacci数列

fib(n) = fib(n-1)+fib(n-2)
0 1 1 2 3 5 8 13 21 …

をrecursion(再帰)で求めなさい.

# 初項

Fibonacci数列の初項は0.

“`
def fib(n)
if n==0
return 0
end
end

p fib(0)
“`

assertionを試しておく.

“`
require ‘./assert_equal’

def fib(n)
if n==0
return 0
end
end

assert_equal(0, fib(0))
“`

# 第1項

テストをきれいにするために配列にしておく.

“`ruby
require ‘./assert_equal’

def fib(n)
if n==0
return 0
end
if n==1
return 1
end
end

[[0,0],[1,1]].each do |index, expected|
puts assert_equ

元記事を表示

Rakeを使って作業を自動化

\![macOS-11.1]() \![ruby-2.7.2p137]()

# Preface (はじめに)

makeやantのRuby版として`rake`があります. これは`Rakefile`に記述に沿って自動で処理してくれます.

今回はGitの “add-commit-pull-push”までの処理を自動化してくれる`Rakefile`を作って作業を楽にしたいと思います.

# rake

## Rakefileの基本

典型的な`Rakefile`は,

“`ruby:Rakefile
task :default do
system ‘rake -T’
exit
end

desc ‘hello NAME’
task :hello do
name = ARGV[1]
puts “Hello #{name}!”
exit
e

元記事を表示

initializeメソッドとクラス変数を使って合計金額を出す方法

## 概要

合計金額の出し方はいくつも方法があります。

今回はその中でも**`initialize` メソッドと `クラス変数`**を使用します。

## 目次
– 実践
– 問題
– 条件(構成)
– 解答(解説)
– プロセス
– 補足

– まとめ
– 参考文献

## 実践

#### 問題

>initialize メソッドと クラス変数 を用いて果物の合計金額を出力してください。

#### 条件(構成)

– クラス名
– Fruits

– インスタンス
– apple
– 名前: リンゴ
– 値段: 200

– banana
– 名前: バナナ
– 値段: 150

– melon
– 名前: メロン
– 値段: 500

– クラス変数
– sum

– クラスメソッド
– get_sum

– インスタンス変数
– name
– price

#### 解答

元記事を表示

【脱Github desktop!】terminalを使ってgit操作

# 概要

学び始めてgitの操作をする時、Github desktopって便利ですよね。
GUIで直感的で楽ちん!ていうかなんていうか。

ですが、現役のエンジニアさんのお話を聞いていると、git操作はterminalから行っているとか!

本記事では、脱Github desktopのために、
terminalでの操作方法について記載していきます!

本記事の構成は以下の通りです。

– リポジトリの作成編
– ブランチを切って作業編

なお、初学者が書いている記事です。
間違いや、表現が正しくない部分などあればコメントいただけると幸いです!

# 環境

【環境】
macOS Catalina 10.15.7
Ruby on Rails 6.0.0
Ruby 2.6.5

【その他】
以下の前提で進めていきます。

– GitHubにアカウントを登録している
– rails newを実施し、アプリのディレクトリを作成している

# 操作方法

### リポジトリの作成編

#### 1, リモートリポジトリを作成

まずはGitHubにログインし、リモートリポジトリを作成します。

元記事を表示

Ruby 基礎

##文字の表示
putsなど文字の表示をおこなうことをメソット言う
puts 改行される
print 改行されない
p は数列と文字列をはっきりしてくれる。

##変数

変数とはデータにラベルをつける。
ラベルをつけることによって意味がわかるようになる。
– 基本敵的にアルファベット
– 数字先頭はダメ
– スネークケース
– キャメルケース

元記事を表示

ngrokの導入方法

## 開発環境
macOS Catalina 10.15.7
Ruby 2.5.3
Rails 5.2.3

## 概要

業務の中でngrokを使う場面があったので、ngrokの導入方法についてまとめていこうと思います。

## 手順

※ 下記のようにHomebrewを用いるやり方もありますが、今回の自分のやり方では、Homebrewは使いません。

> ngrokの利用方法
https://qiita.com/hirokisoccer/items/7033c1bb9c85bf6789bd

① 下記のリンクより、OSに合わせてダウンロードを行ってください

https://www.notion.so/ngrok-dea8e5744d0e4c54851c5c4136950fbb#7d85e79927d0473da1157c47597a12f2

② ダウンロードが終了したら、zipファイルを解凍し、自分の使いやすいディレクトリに置いておいてください。
自分は、コマンドラインでどこからでも使えるように、パスが通っている/usr/local/binにファイルを設置しました。

元記事を表示

【Ruby On Rails】脱root_path! ネスト”子”のビューから、ネスト”親”の:showへリダイレクト記述法

# 記事について
備忘録です。

routes.rbにて親子関係を作った場合の、子コントローラーのredirect_toの書き方について記します。

私は今までネストされた子コントローラーのcreateアクションや、updateアクションのリダイレクト先をroot_pathで済ましていました。

脱root_pathを目指します。

#前提

親:contents
子:descriptions

“`ruby:routes.rb
root to: ‘contents#index’

resources :contents, only: [:index, :new, :create, :show, :edit, :update] do
resources :descriptions, only: [:new, :create, :edit, :update, :destroy]
“`

上記のように、子には:showが指定されていないこととします。
※便宜上、onlyオプションで記述しています。

rails routes↓
![スクリーンショット 2020-12-29 18

元記事を表示

【Rails、JavaScript】いいね機能を実装(同期・非同期通信)

# 概要
いいね機能の実装方法についてまとめます。

#参照
同期通信のいいね機能実装は以下の本を参考に、その後の非同期通信化は以下の記事を参考にして行いました。
ありがとうございます。

### 本

[改訂4版 基礎Ruby on Rails 基礎シリーズ](https://www.amazon.co.jp/%E6%94%B9%E8%A8%824%E7%89%88-%E5%9F%BA%E7%A4%8ERuby-Rails-%E5%9F%BA%E7%A4%8E%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E9%BB%92%E7%94%B0%E5%8A%AA-ebook/dp/B07GXB2ZSW/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=rails+%E5%9F%BA%E7%A4%8E&qid=1609224169&sr=8-2)

### 記事
[【Rails】いいね機能完全版!同期いいね、いいね数の表示、非同期いいね、アイコン表示、それぞれ

元記事を表示

個人アプリ開発日記 #1

#目次
[1.はじめに](#1-はじめに)
[2.内容](#2-内容)
[3.おわりに](#3-おわりに)

#1. はじめに
私はプログラミング初学者ですが、Qiitaでは今まで自分が詰まった
エラーの解決方法や、Ruby/Railsの小技に関する記事を10本強投稿してきました!

来月から転職活動を本格的に始めるにあたり、
1ヶ月程前からポートフォリオ用に個人アプリを制作しています。
自分の制作過程をアウトプットすることで、理解を深めてより良い
作品作りに活かしたいと考え、今日から開発日記として投稿していきます。

アプリを作っているけど中々良いアイデアが浮かばない、人に説明する時の
まとめ方がよく分からない。。という人の役に立てればこの上なく嬉しいです。

初回の今日は、自分が現在制作しているアプリの概要を簡単に説明していきます!

#2. 内容
以下の項目に箇条書きで回答していきます。

1) アプリを一言で言うと
2) キャッチコピー
3) ターゲット(メインターゲット、サブターゲット)
4) アプリでできること
5) このアプリがあると感じる嬉しいこと

1) アプリを一言

元記事を表示

variable and method

![Mac OS X-10.15.7]() ![ruby-2.7.1p83]()

# variable

## お題

受け取った引数ARGVをnameという変数(variable)に代入してそれを打ち出すcodeを書け.

> ruby name_variable.rb Rudy
Rudy

## 代入

rubyの変数には型宣言の必要がなく適当に型が定められる.代入の仕方は

“`ruby
name = ‘Rudy’
“`

みたいにイコールで 

## 類題の解き方

ARGVを受け取って名前を返すには

“`ruby
name = ARGV[0]
puts “Hello #{name}.”
“`

# method

## お題

> ruby hello_method.rb Rudy
Hell Rudy.

元記事を表示

OTHERカテゴリの最新記事