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

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

【Rails】脱初心者っぽい書き方【ポートフォリオ制作】

## はじめに
初心者、実務未経験者には何が足りないのかという視点で書いてみました
**初心者レベルを脱したい人**、**他の駆け出しエンジニアと差別化したい人**には役に立つ内容かと思います

いろいろ書きますが、一気に全部理解しようとはせず**使えそうなものから試してみてください**?

* **対象者**
* プログラミング学習を始めてポートフォリオアプリを制作している人
* 基礎的な内容の理解ができており、問題なく動くアプリを作れる人
(ちゃんと動くアプリを作れずエラー解決に四苦八苦する人は対象外)
* **内容**
* 主にサーバーサイド(rubyファイル)

初めてポートフォリオアプリを作成すると、**とりあえず期待通りに動くこと**が目標になるため、実際の現場での作法をいろいろ無視してしまうケースが多くあるかと思います。

まずは動くコードを書くことが最重要ではありますが、**それだけだと現場では通用しないのも事実です**:warning:

現場で教えてもらってできるようになれば問題ない気もしますが、余裕のある人は先に知ってお

元記事を表示

【Rubyによるデザインパターン】シングルトンパターンのメモ

プログラムの設計力向上のため『Rubyによるデザインパターン』を読んでおり、気になるデザインパターンを、1つずつまとめています。

今回は、シングルトンパターンについてまとめました。

## デザインパターン記事一覧
[【Rubyによるデザインパターン】テンプレートメソッドパターンのメモ – Qiita] (https://qiita.com/yuki_0920/items/07382034dfb65f0a13a0)
[【Rubyによるデザインパターン】ファクトリーメソッドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/324c5536bf4e3d085f33)
[【Rubyによるデザインパターン】ストラテジーパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/87dc056952f71b88a287)
[【Rubyによるデザインパターン】コマンドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/465450853098770122

元記事を表示

RubyでオプションをJSONファイルとコマンドライン引数の双方から取得する場合の書き方

Rubyでプログラムを作成している際に、プログラムのオプションを以下の2つのソースから取得したい場合があります。

1. JSONファイル
2. コマンドラインオプション

こういう場合に、よく使う実装の方法を共有します。

## 基本的なコンセプト

1. オプションは一つのオブジェクトに集める。
例: `class Options`
2. オブジェクト生成時に、JSONファイルからオプションを読み込む。
例: `opt = Options.new(‘some.json’)` とするとJSONファイルからオプションを読み込む。
3. オプションにアクセスするときはオブジェクトの accessor を使う。
例: `opt.option_1` のような感じでアクセスできる。
4. コマンドライン引数を [OptionParser](https://docs.ruby-lang.org/ja/latest/class/OptionParser.html) を使ってハッシュに保存して、かつそれを上記のオプションオブジェクトに反映するためのインターフェースを持つ

元記事を表示

ルーティングにおける、getとpostの使い分け (Ruby on Rails)

(学習備忘録)

Ruby on Railsのルーティングにおける、getとpostの使い分け

「get」
データベースを変更しないアクション

「post」
データベースを変更するアクション

元記事を表示

スクール4週目 学習環境の大切さ

スクール4週目では、問題をときながら一つずつ実装していくChatAppを完了することができました。
#学習環境の大切さ :satellite:
プログラミング学習時に皆さんは音楽を聴きますか?集中力を高める為や、気分を上げる為に聴く方は多いと思います。私は学習中、常にイヤホンで自然音を流しています。

自分はこれまで自然音を流しながら学習する習慣はなく無音で学習しては周りの雑音が気になり、集中が途切れることが多々ありました。ところが、自然音を流しながら学習をするとプログラミングに没頭できることを実感しています。

これは、一定のテンポで自然音を流すことでリラックス効果あるからだと思います。また、ポモドーロ・テクニックを活用して25分勉強して5分休憩するを繰り返すことで、集中力を維持できます。ぜひ、一度は実践をしてみてください。

#応用カリキュラム :bulb:
・ユーザー管理機能実装
・グループ作成編集機能実装
・メッセージ送信機能実装
・テスト
・非同期通信機能実装
・自動更新機能実装

**ユーザー管理機能実装** :man_tone1:
gemのdeviseを使用してのユーザー

元記事を表示

【Rails】2つの(複数)deviseを導入

#はじめに
「ユーザーと業者」、「管理者とユーザー」、「先生と生徒」など、登録情報が2つ以上(複数)必要な場合、deviseも同様に2つ以上(複数)必要です。
2つの(複数)deviseの導入方法を紹介します。

###目次
1. deviseのインストール
2. モデルを作成
3. ルーティングの設定
4. コントローラーの作成

##開発環境
ruby 2.6.5
rails 6.0.0
devise 4.7.3

#実装
それでは実装していきます〜

#1. deviseのインストール

deviseのgemを導入します。

“`Gemfile.
# 中略
gem ‘devise’
“`

記述したら、bundle installを実行しましょう。

“`ターミナル.
bundle install
“`

Gemをインストールした後はrails sをcontrol + Cで一度停止し、サーバーを再起動する必要があります。

続いて、アプリケーション内でdeviseを使えるようにするため、下記のコマンドを実行します。

“`ターミナル.
rails g devise

元記事を表示

Rubyの第5歩(Assert編)

\![macOS-11.0.1]() \![ruby-2.6.1p33]()

# はじめに

本記事ではマルチスケールシミュレーション第8回授業Rubyのassert関数について扱います。

# 目次

1. [前回の振り返り](#前回の振り返り)

2. [授業内容](#rubyのassert関数)

1. [Assertとは](#assertとは)

2. [Assert関数](#assert関数)

3. [colorize](#colorize)

4. [requireで呼び出し](#requireで呼び出し)

3. [まとめ](#まとめ)

4. [参考資料](#参考)

# 前回の振り返り

[前回の記事(Rake編)](https://qiita.com/Rooter-

元記事を表示

Rubyの第4歩(Rake編)

\![macOS-11.0.1]() \![ruby-2.6.1p33]()

# はじめに

本記事ではマルチスケールシミュレーション第8回授業Rubyのrakeについて扱います。

# 目次

1. [前回の振り返り](#前回の振り返り)

2. [授業内容](#rubyのrake)

1. [Rakeとは](#rakeとは)

2. [RakeFileについて](#rakefile)

3. [まとめ](#まとめ)

4. [参考資料](#参考)

# 前回の振り返り

[前回の記事(条件文と配列編)](https://qiita.com/Rooter-edi/items/05fc5bba42035ee1f397)では、Rubyにおける条件文と配列について書きました。

Rubyではif,elsif,elseを用いて条件

元記事を表示

Rubyの第3歩(条件文と配列編)

\![Mac OS X-10.15.7]() \![ruby-2.6.1p33]()

# はじめに

本記事ではマルチスケールシミュレーション第7回授業Rubyの条件文、配列、caseについて扱います。

# 目次

1. [前回の振り返り](#前回の振り返り)

2. [授業内容](#rubyの条件文と配列)

1. [Rubyの条件文](#条件分岐)

2. [Rubyの配列](#rubyの配列)

3. [実際にやってみる](#実際にやってみる)

4. [caseを使う](#caseの使い方)

3. [まとめ](#まとめ)

4. [参考資料](#参考)

# 前回の振り返り

[前回の記事(変数とmethod編)](https://qiita.com/Rooter-edi

元記事を表示

ActionMailer実行時にletter_openrが原因で落ちた

##表示されていたエラー
“`Launchy::CommandNotFoundError Exception: Unable to find a browser command. If this is unexpected, Please rerun with environment variable LAUNCHY_DEBUG=true or the ‘-d’ commandline option and file a bug“`

##経緯と概要
vagrantがどうこうという記事ばかりで参考になるものが決め打ちでなかなか見当たらなかった為、次回同じ原因でハマった時用の備忘録。
結論、EC2でリモート開発するなら、letter_openerではだめで、letter_opnener_webを使わないといけない。

“`ruby
HogeMailer.hoge(huga).deliver
“`
みたいな感じのパターンで落ちてて、上記エラー出てるなら疑うべき。

##環境
Rails 4.2
Ruby 2.3
letter_opener 1.4.1
EC2に内にソースコードを

元記事を表示

railsの基本理念を僕なりに解釈

##はじめに
脱初心者にむけてアウトプットをしていこうと思って記事を書いております。
間違ったことがありましたら、ぜひコメントいただけると幸いです。

##Railsとは何か
railsはRubyのフレームワークです。
フレームワークとはアプリケーション開発やシステム開発を楽に行えるように必要な機能を予め用意してあるプログラムの雛形のこと。

##Railsには基本理念がある
この基本理念を遵守することでこのフレームワークの能力を最大限に生かすことができる。
つまりこの基本理念を守ってプログラムを書こうということです!

##DRY
DRYとはDon’t Repeat Yourselfの略で、同じ情報を繰り返し定義しない、という考え方です。メリっどとしてコードの量を減らすことで、可読性が向上することや、アプリケーション自体の動作が早くなるというメリットがある

####例えば
“`
class EventsController < ApplicationController def index @events = Event.all end def new

元記事を表示

Rails初心者がRSpecに入門してみた 2

[前回](https://qiita.com/grinch1252/items/c1b94cbfeecffe2a56d5)

大分間が空いてしまいましたが、前回からの続きでテストの記述方に触れていきます。

#RSpec記述の基本形
“`
‘rails_helper’

RSpec.describe “テストする対象”, type: :Specの種類 do

describe “どのような機能” do

before do (以下のテストを確認するために必要な用意)
(事前準備)
end

context “どのような状況/条件で” do
(具体的な条件)
it “どのような結果を期待する” do
(具体的な結果/処理)
end
end
end
end
“`

基本的には上記のような形になると思います。

describeはテストしたい機能、contextはif文のような条件分け、itはそれに対して期待する結果を記述します。before doは必要であればテストをする以前に必要な処理、例えば

元記事を表示

Rubyで絶対値を返したい時はabsメソッド

ruby 2.7.0の記事です

– abs 絶対値を返す
Integerクラスabs

“`ruby
-12345.abs # => 12345
12345.abs # => 12345
“`

元記事を表示

Rubyの入力と出力メソッド

ruby 2.7.0についての記事です。
# Rubyの入力メソッドのまとめ
1.gets
getsメソッドを使って入力した値は全て文字列になる
公式ドキュメント(IOクラスgets)

【関連するメソッド】

– chomp 文字列末尾の改行を取り除く
公式ドキュメント(stringクラスchomp)
– split  先頭と末尾の空白を除いたうえで、空白文字列で分割する
公式ドキュメント(stringクラスsplit)
– to_i 文字列を整数(integer)に変換する。少数に使うと整数に変換する

元記事を表示

TECH CAMP (エンジニア転職)7週目の学習内容の振り返り

みなさんおつかれさまです。今週やっとテックキャンプの最終課題が終わったので、明日から自分のポートフォリオの作成に入ろうと思います。ではでは、振り返りをやっていこうかと思います。

11/16~11/22までの学習進捗
・商品詳細表示機能の導入
・商品情報編集機能の導入
・商品削除機能の導入
・商品購入機能の導入

正直いって詳細表示、編集、削除機能に関しては、そんなに難しくなかったですが、購入機能は結構な工数が必要になり、時間は結構かかりました。いつもならそれぞれの項目でどんなことをやったのかを書いているのですが、フリマアプリの商品情報に関する機能はそこまで難しくない上、文章として残しておけるほどの情報量を思い出せないので割愛しておきます(笑)。

・購入機能の導入
まず始めに、大まかに手順が必要だったのかを箇条書きで書くと、
・テーブルの作成(購入履歴と配送先の情報をDBに記録)
・フォームオブジェクトパターンの実装
・決済機能の導入
・テストコードの実装
・購入機能実装によるビューファイルの編集
という感じですね

最初にやるテーブル作成では、2つのテーブル(購入履歴と配送先)が必

元記事を表示

【Rubyによるデザインパターン】オブザーバーパターンのメモ

プログラムの設計力向上のため『Rubyによるデザインパターン』を読んでおり、気になるデザインパターンを、1つずつまとめています。

今回は、オブザーバーパターンについてまとめました。

## デザインパターン記事一覧
[【Rubyによるデザインパターン】テンプレートメソッドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/07382034dfb65f0a13a0)
[【Rubyによるデザインパターン】ファクトリーメソッドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/324c5536bf4e3d085f33)
[【Rubyによるデザインパターン】ストラテジーパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/87dc056952f71b88a287)
[【Rubyによるデザインパターン】コマンドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/4654508530987701220

元記事を表示

[Rails]respond_toについて勉強してみた!![初心者]

#respond_toメソッドとは?
URLにアクセスする際に、リクエストされるフォーマット(HTMLやJSONなど)ごとに、処理を分けることができるメソッドです。
リクエストのフォーマットは、URLの最後に拡張子(htmlやjsonやjs等)をつけることで、指定することが出来るものです。

普段、インターネットを利用する時に、わざわざ拡張子まで意識して利用している人は少ないと思いますが、特にフォーマットの指定がなかった場合は、デフォルトのHTML形式で送信されます。

近年に入り、Web APIでJSON形式のデータを扱うことも増えたので、このメソッドを目にする機会も多くなりました。

つまり、通常はHTML形式で結果を取得できているのですが、明示的に他のフォーマットを指定された場合に備えて、この“respond_toメソッド“を使用しましょう、ということです。

#使い方
まずは基本構文から確認しましょう。

““
respond_to do |format|
format.形式 {行いたい処理}
end
““

↑のように記述します。

#具体的な使用例

“`

元記事を表示

順列の全探索をするプログラム(競技プログラミング向け)

順列をすべて列挙するプログラムを各言語で書きました。`10`, `20`, `30`, `40` の4つの要素があったとして次のような出力をします。要素が $ n $ 個あれば、 $ n! $ 行の出力をします。出力するところになにか処理を書けば順列の全探索ができます。

“`
10 20 30 40
10 20 40 30
10 30 20 40
10 30 40 20
10 40 20 30
10 40 30 20
20 10 30 40
20 10 40 30

“`

書いた言語:

– ライブラリ使用: C++, Scala, Ruby, Python
– 独自実装: C言語, Java, JavaScript, Elixir

経緯:

AtCoderの[ABC183 C – Travel](https://atcoder.jp/contests/abc183/tasks/abc183_c)では順列の列挙が必要でした。順列列挙のアルゴリズムがわからず、競技中は無理やり書いてACは取れたのですが、解説を読むともっとスマートなアルゴリズムがありました。

元記事を表示

Rails 子レコードの作成・更新時に親レコードのupdated_atも更新する

こんにちは。
初めて記事を投稿してみます。

Railsで子レコードを作成・更新時、親レコードのupdated_atも更新したい時
ActiveRecordの関連付けで、touchオプションを使えば簡単にできること知ったので
備忘のためにまとめてみます。

##touchオプション

Railsガイドより
>:touchオプションをtrueに設定すると、そのオブジェクトがsaveまたはdestroyされたときに、関連付けられたオブジェクトのupdated_atタイムスタンプやupdated_onタイムスタンプが常に現在の時刻に設定されます。

“`ruby
class Shop < ApplicationRecord has_many :reviews end class Review < ApplicationRecord belongs_to :shop, touch: true end review = Review.last review.update( title: "いいお店") => # review.shop.updated_atも更新する
“`

#

元記事を表示

lメソッドで時刻の表示が指示通りできない

## 起きたこと
https://qiita.com/jnchito/items/831654253fb8a958ec25
に従い設定をしました。
しかし、ja.ymlのdefaultをいくらいじってもブラウザに指示通りの表記がされませんでした。

“`ruby:ja.yml
ja:
time:
formats:
default: “%Y/%m/%d”
“`

## 結論
ja.ymlファイルの中に2つja:の塊を作っていたことが原因でした。
もう一つのja:の塊とは別のことも記述していました。具体的にはエラー時に表示されるカラム名を日本語に変換するためのデータです。

“`ruby:ja.yml改善前
ja:
time:
formats:
default: “%Y/%m/%d”
ja:
activerecord:
attributes:
user:
nickname: 名前
grade_id: 段位
email: Email
password: パスワード

元記事を表示

OTHERカテゴリの最新記事