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

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

Ruby 勉強メモ(テスト駆動開発)

# 概要
前回までは関数や条件分岐、rakeビルドツールなどを学習した。今回は一度基本に立ち戻って、Rubyの真髄としている「テスト駆動開発」について学んだことをメモする。

## テスト駆動開発とは
例えば大規模なソフトを開発する場合、長く複雑なソースコードを書くわけですが、どんなにプログラミングに長けている人でもいきなり完璧なコードを書くことは不可能です。
極端な話、もし一度ソースコードを一万行書いてからコンパイルや実行テストをした場合、エラーや例外が発生しますがこの場合厄介なのが、どこにエラーがあるか、どこから直していけばいいか分からなくなる点です。

今のは極端な例ですが、テスト駆動開発ではこの対策としてざっくりいうと、一部の機能の最小限のテストコードを書く➡ エラーが起きるので修正する ➡ エラーが起きない状態を維持して読みやすいコードに改善
この3ステップを繰り返します。

### メリット
非常に細かい頻度でエラーのチェックをするためバグを早期発見できます。エンジニアは追加の実装などで原因不明のバグに見舞われることが多いため、この細かいエラーチェックはそのようなバグを防い

元記事を表示

Ruby 勉強メモ(条件分岐)

# 概要
前回はプログラミングにおいて最も基本となる変数と関数について勉強した。今回は条件分岐でつかうif else文のメモを以下に記す。

“`ruby

if ~ then
処理1
elsif ~ then
処理2
else
処理3
“`
が基本的な形

### サンプルプログラム
その年がオリンピックの開催年かどうか判定するプログラムをif elseで作成してみた

“`ruby

year = 2021

if year%4 == 0 then
print(“今年はオリンピック”)
elsif year == 2021 then
print(“今年はオリンピック(コロナウイルスにより延長)”)
else
print(“今年はオリンピックではない”)
end
“`

### 参考
https://www.javadrive.jp/ruby/numeric_class/index6.html

元記事を表示

Ruby 勉強メモ(変数&関数)

# 概要

今回はプログラミングでは特に基本となる、変数と関数について学習したメモを忘備録として以下に記す。

## 変数

“`ruby

a = ‘hello’ # ローカル変数
A = ‘world’ # 定数
$global = ‘ruby’ #グローバル変数
“`

ローカル変数なら小文字、定数ならすべて大文字で宣言する(慣習)。
またグローバル変数なら変数前に$を入れる

## 関数
“`ruby

def func(argument)
puts argument

a = ‘hello world’
func(a)
>>> hello world
“`
関数については書き方がPythonに非常に似ているため馴染みやすかった

### 参考

【Ruby入門】変数の扱い方まとめ|クラス・インスタンス・グローバル

元記事を表示

Ruby 勉強メモ(puts)

# 概要
Rubyについて授業で習ったのでメモ。今回は主に数値や文字列を出力する際に使う’p’, ‘puts’, ‘print’メソッドの違いを調べたのでいかに記す。

|メソッド |改行 |引数の型情報の表示 |
|—|—|—|
|p |o |o |
|puts |o |x |
|print |x |x |

また、pメソッドだと”Hellow World”という引数で出力したとき両端のタブルクオーテーションも出力される

# 参考ページ
I(puts)]https://qiita.com/Chinats/items/c464c3a88c263f15224b

元記事を表示

roman numeralsを解いてみよう

https://qiita.com/knkrhs/items/27440e1c7f75cc5f53f0

> 課題
>アラビア数字(arabic numerals)を受け取って,ローマ数字(roman numerals)を返すmethodを書きなさい

ほほぉ、なかなか面白い。ということで、これを解いてみる。
大晦日だし、たまにはこういうのもいいですよね!

“`ruby:digittoarabic.rb
DigitToRoman = Struct.new(:arabic, :roman )

def roman(n)
# 対応しているのは、1~3999まで
if n <= 0 || n >= 4000 then
raise “Invalid input(” + n.to_s + “)”
end

# 変換用のテーブルつくる。
# 本当はClassでinitilizeタイミングでした方がよいが。
v = Array.new()
v.push ( DigitToRoman.new( 1000, “M”) )

元記事を表示

Ubuntu(20.04.1 LTS)を用いてRubyとRails環境を構築する前段階でハマった話

##はじめに
Ubuntu使い始めて2ヶ月
Ruby on Rails勉強し始めて3ヶ月の超初心者です。(2020.12.31時点)
初投稿なので、お手柔らかにお願いします>< ##環境 + Ubuntu 20.04.1 LTS ##参考にしたサイト + (Ubuntu)Ruby on rails 6.0 環境構築
+ Ruby 歴 10 年の私が【絶対に】 gem install rails コマンドを実行しない理由
+ ubuntuで「sudo apt-get install docker-ce」実行時に以下のエ

元記事を表示

未経験からWeb系エンジニアへ転職するために勉強しています。

#はじめに
未経験からWeb系エンジニアに転職するために勉強をしています。
勉強の進捗や勉強方法などを記録しておくために記事にしたいと思います。
#自己紹介
まずはじめに、自己紹介をします。
現在は建築系の仕事を大分でしています。
年齢は31才、結婚していて2歳の子供がいます。
プログラミングの経験は、大学時代に研究でフォートランを使って、数値計算のプログラムは作っていました。
大学時代からプログラミングって面白いなと感じていましたが、建築の勉強をしていたこともあり、そのまま建築系の仕事につきました。
今の会社では、7年働いており、それなりに楽しいのですが、プログラミングを仕事時間外にやってみると、非常に面白く感じたので、Web系エンジニアに転職することを最近考え始めました。

以前にも何度かプログラミングに挑戦はしてみたのですが(アンドロイドアプリやiPhoneアプリの開発)途中で挫折してしまいました。
2020年の10月からプロゲートのrailsコースに取り組んでみたところ、非常にわかりやすく、これなら挫折しないで学べそうだと感じ、本格的に勉強に取り組んでいます。
10月より以前は

元記事を表示

Google Recruit

# はじめに

今回は以下の記事にある,アラビア数字を受け取って,ローマ数字を返す関数to\_romanをrubyで実装する.
– [roman numerals](https://qiita.com/daddygongon/items/2d0a73a51ddab2d9da1b)

# roman numerals

境界値が沢山あってifだらけになってしまうような場合は,配列に境界値を入れてループで回すという実装テクニックが使える場合がある.今回はこの方法が有効なので使う.

“`ruby:roman_numerals.rb
def to_roman(n)
raise RangeError if n <= 0 or 4000 <= n arabic_num = [1000,900,500,400,100,90,50,40,10,9,5,4,1] roman_num = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"] ret = "" arabic_num.zip(roman_num)

元記事を表示

Rubyで回分数の判定

入力された数値が回分数(逆から数値を並べても同じになる数値)の判定

“`ruby
# 回分数であればtrueを返す
def checkPalindromicNumber(number)
number = number.to_s
size = number.length / 2 – 1
return ( number[0..size] == number.reverse[0..size] )
end
“`

元記事を表示

アプリケーションをRuby3にあげるときにやること

今年のクリスマスにRubyのメジャーバージョンが代わり、ついにRuby3.0.0が世に出ましたね。

Ruby2系でこの言語に触れた方は多いのではないでしょうか。(その一人です)

初のメジャーアップデートということで、仕事で関わっているアプリケーションや自分が管理しているgemを、ためしにRuby3にあげてみよう・・・と試みたところでハマった点について書いていこうと思います。

さあ、レッツ `rbenv global 3.0.0`!

## TL;DR

直前・直後のバージョンでCIを回すことが大切ですが、いくつか注意点があります。

– Ruby2.7.2以降では、デフォルトで警告が表示されない
– テスト環境に環境変数 `RUBYOPT=’-W:deprecated’` をつけておこう
– バージョンをまたいだマトリックスビルドをする場合、テストヘルパーに `Warning[:deprecated] = true` が便利

おまけとして、実際の対応で遭遇した現象の調査結果と、具体的な対処法も書いておきます。

## 直前バージョンが警告を出さない
Ruby3へバージョンを上

元記事を表示

【Rails】複数テーブルでキーワード検索

##はじめに
複数テーブルを一つのフォームでキーワード検索するのに少し苦労したので、
備忘録として共有させていただきます。

親テーブル

| recipes |
|:-:|
| id |
| title |

子テーブル

| ingredients |
|:-:|
| id |
| name |
| recipe_id(FK) |

##手順

“`ruby:views/recipes/search.html.erb
<%= form_with url: search_recipes_path, local: true, method: :get do |f| %>
<%= f.text_field :keyword, placeholder: "キーワードを入力" %>
<%= f.submit "検索" %>
<% end %>
“`

入力された内容は:keywordに格納され、コントローラーのparams[:keyword]で受け取ります。

“`ruby:routes.rb
resources :recipes do
collection do

元記事を表示

[Rails]views ファイル作成#textが表示される

##textが表示される

表示していない#textという文字列が表示されたので、調査しました。

![スクリーンショット 2020-12-30 23.17.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/985261/2a0bf01b-1272-a1c1-91e7-f9477c77c03f.png)

間違ったソースコード index.html.erb↓

“`

トップページ

<%= @posts.each do |post| %>

<%= post.memo %>
<%= post.created_at %>

<% end %>
“`

posts_controller.rb ↓

“`
class PostsController < ApplicationController def index @posts = Post.all end end ``` @posts = Post.all で DB

元記事を表示

Rubyで数字をローマ数字に変換する

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

# Preface (はじめに)

アラビア数字を受け取ってローマ数字を返すmethodかclassを作れという課題が出たので,
Rubyを用いて解いてみます.

# Roman numerals

ローマ数字なんていまどきオシャレな時計くらいしか目にしません.
12以上の数字はどう表すのでしょう.

[ローマ数字 – Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%9E%E6%95%B0%E5%AD%97)を参考にアラビア数字とローマ数字の対応表を以下に示します.

| アラビア数字 | ローマ数字 |
|————-:|:———–|
| 1

元記事を表示

Google Recruit

# はじめに

今回は以下の記事の「Google Recruit」及び「類題(最終課題)」を解くコードをRubyで実装する.
– [Google recruit problem, exp and prime](https://qiita.com/daddygongon/items/ba94b0f2a73990fc6a07)

# Google Recruit

$e$(自然対数の底)の値で連続する10桁の数のうち,最初の素数を出力せよ.ただし,$e$は以下の数とする.

“`
2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274274663919320030599218174135966290435729003342952605956307381323286279434907632338298807531952510190
“`

## 入力

まず上記の$e$の値を標準入力から読み込む.

“`ruby:google_rec

元記事を表示

【Ruby】sliceメソッド

論理的思考強化の為、ドリルの復習をしています。
初学者のため、何かお気づきの点がありましたらご教示いただけますと幸いです。

## 問題
任意の文字列に対して、sliceメソッドを使用しn番目の文字を消し、
n番目の文字を消した状態の文字列を出力するメソッドを作りましょう。

#####呼び出し方
missing_char(string, num)

#####出力例
missing_char(‘ジンギスカン’, 1) → ‘ンギスカン’
missing_char(‘ジンギスカン’, 2) → ‘ジギスカン’
missing_char(‘ジンギスカン’, 4) → ‘ジンギカン’

######ヒント
slice
配列や文字列から指定した要素を取り出すことができます。
文字列の要素を指定する際は数字を用い、先頭の文字列は0からカウントされます。

[slice!](https://docs.ruby-lang.org/ja/latest/method/String/i/slice=21.html)
~~末尾にエクスクラメーションマーク(!)のつくメソッドを破壊的メソッドといい、
もとの

元記事を表示

Ruby + Qiita API v2 で特定ユーザーの Qiita 記事一覧を取得する

## 概要

– Ruby + Qiita API v2 で特定ユーザーの Qiita 記事一覧を取得する

## サンプルコード

“`rb
require ‘json’
require ‘net/http’
require ‘open-uri’

access_token = ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’ # アクセストークン
user = ‘niwasawa’ # 記事作成ユーザ名

all_items = [] # すべての記事を収める配列

resource_url = ‘https://qiita.com/api/v2/items’ # WebAPI エントリポイント
headers = {‘Authorization’ => “Bearer #{access_token}”} # 認証用ヘッダ

page = 0 # ページネーションのページ番号
loop do
# パラメータを組み立てる
page += 1
params = {
‘query’ => “user:#{user}”, # 記事作

元記事を表示

Cocoapodsのインストールについて

# はじめに
今月、あるお店でMacBookPro early2015を1万円で入手しました。(バッテリー膨張はしていたため2万円で修理しました。キーボードやトラックパッド、バッテリーは新品に)

Apple大好きなので手に入って感動しました。

そこで、いつかMacを手に入れたら勉強してみたいと思っていたSwiftの学習を始めました。
学習にあたって、Cocoapodsのインストールで少し躓いたためこちらに残します。

# 環境
– MacBook Pro (Retina, 13-inch, Early 2015)
– MacOS Catalina ver10.15.7

# Cocoapodsとは?
> CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. It has over 79 thousand libraries and is used in over 3 million apps. CocoaPods can help you scale your projects ele

元記事を表示

sliceメソッドとは?slice!との違いを例題を解いて理解しよう!

## 概要

sliceとslice!の違いをまとめさせて頂きました。もっとわかりやすい表現などあればコメント、ご指摘いただけたら幸いです!

## 目次

– sliceとslice!
– slice
– slice!

– 実践
– 問題
– 解答(解説)

– まとめ
– 参考文献

## sliceとslice!

> 【例】配列から1番目の要素を取り出し、もとの配列を出力する

**ポイント**

– 配列や文字列から指定した要素を取り出すことができるメソッド
– 要素を指定する際は数値
– 先頭は0からはじまる

#### slice

“`ruby

array = [0, 1, 2, 3, 4, 5]
num = array.slice(1)

puts num
puts array

# ターミナル

# puts num の結果
# 1
# => 指定した要素の取り出し

# puts array
# 0
# 1
# 2
# 3
# 4
# 5
“`

#### slice!

– エクスクラメーションマーク(!)のつくメソッ

元記事を表示

Railsチュートリアル第6版の3.3.1のテストで「ActionView::Template::Error: Permission denied」エラーが出たので解決した

##環境は何?
* Windows10 Home ver.2004
* ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x64-mingw32]
* Rails 6.1.0

##何が起きた?
 [Railsチュートリアル](https://railstutorial.jp/chapters/static_pages?version=6.0#sec-our_first_test)のリスト3.15の`rails test`コマンドを実行したら、次のようなエラー①が出た。

“`:エラー①
D:\Programming\RubyOnRails\sample_app2>rails test
Run options: –seed 42827

# Running:

E

Error:
StaticPagesControllerTest#test_should_get_home:
ActionView::Template::Error: Permission denied @ rb_file_s_rename – (D:/Programmi

元記事を表示

Railsをインストールしたはずがrails -vでエラーが発生する時の対処方(初心者向け)

railsのインストールをブログの記事通り進めてきたが

“`sql
$ rails -v
“`
で以下のようなエラーが発生しました。

“`sql
$ rails -v

Rails is not currently installed on this system. To get the latest version, simply type:

$ sudo gem install rails

You can then rerun your “rails” command.
“`

いろいろな記事を読んで解決しようとしましたがうまくいかず、ターミナルを再起動して再度バージョン確認。

“`sql
rails -v
Rails 6.1.0
“`
オーマイガー
インストールされてやがる!!

初心者でrails -vでエラーになった時はターミナルを再起動せよ!!

元記事を表示

OTHERカテゴリの最新記事