Ruby関連のことを調べてみた2021年02月28日

Ruby関連のことを調べてみた2021年02月28日

【Ruby】【paiza】繰り返し処理

# 繰り返し処理

* 繰り返し処理を使って、スマートに(エンジニアぽく)問題を解きましょう。

## サンプル問題

* 配列array = [10,22]
* 配列の中身の合計値を算出

### 普通の解き方

“`ruby
sum = array[0] + array[1]
print sum // 32
“`

### 繰り返しを使ってスマートに

“`ruby
sum = 0
for number in line
sum = sum + number
end

print sum // 32
“`

## もしも

### もしも配列が3つになったらどうする?

* 繰り返しを使えば、配列の増減に勝手に対応してくれる(エンジニアぽくなる)

元記事を表示

Rails I18nを便利に使おう

アプリケーションを色々な国に展開する場合やメッセージを日本語化する際にI18nを使用すると思います。

下記のようなパターンでは`user_name`をtranslateに渡すと、`”太郎”`が返ってきます。

“`config/locales/ja.yml
ja:
user_name: “太郎”
“`

“`ruby:
> I18n.t(:user_name)
=> “太郎”
“`

しかし、`user`が、`太郎`だけであればこれでも良いのですが、複数いる場合がたいていのパターンだと思います。
これを少し拡張させて、どのuserでも対応できるようにしていきます。

“`config/locales/ja.yml
ja:
user_name: “%{name}”
“`

“`ruby:
> I18n.t(:user_name, name: “太郎”)
=> “太郎”
“`

“`ruby:
> I18n.t(:user_name, name: “次郎”)
=> “次郎”
“`

上記のように変更すると、引数に名前を渡せば、どんな名前でも表示できるように

元記事を表示

PG::ConnectionBad の解決→ sudo だった!かというお話

Railsの勉強中の身で、db、PostgreSQLがどうだという事はまだまだ理解が浅いプログラミング初心者です。
練習中に発生したトラブルで3日間もがき苦しみましたので、備忘録として初Qiita投稿です。誰かのためになると嬉しいです!

#発生状況
作業中、何かのはずみでPCが突然ダウン、自動的に再起動。その後突然 PG::ConnectionBad のエラー表示が出るようになった。
>PG::ConnectionBad: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket “/tmp/.s.PGSQL.5432”?

![スクリーンショット 2021-02-23 16.57.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/423293/40f550a0-0867-b741-fc9e-

元記事を表示

Ruby の while の使い道

大多数のプログラミング言語に `while` というループ(繰り返し)のための制御構造があります。
基本的な考え方は

* 条件式と〈本体〉を持つ
* 条件式が真である間,本体を実行(評価)し続ける

というものですね。
ここで〈本体〉と書いたのはループの中身のことです。

Ruby にも制御構造 `while` があります。
[制御構造 (Ruby 3.0.0 リファレンスマニュアル)](https://docs.ruby-lang.org/ja/latest/doc/spec=2fcontrol.html)

多くの言語と同様,まず最初に条件式を評価して本体を実行するかどうか決めます[^until]。

[^until]: この順序は重要。`while` の論理反転として `until` がある。Ruby の `until` は `while` の真/偽を逆にしただけだが,Pascal の `repeat`〜`until` は本体を実行したあとで条件式を評価して脱出するか否かを決める(なので最低 1 回は本体が実行される)。

Ruby の初心者向け記事[^ar]の定番テーマの一つ

元記事を表示

タグ機能

#参考にしたサイト

https://qiita.com/tobita0000/items/daaf015fb98fb918b6b8

#新しく覚えたこと

“`
add_index(テーブル名,カラム名,オプション) #テーブルにカラムを追加する
unipue: true #一意性制限
“`

https://railsdoc.com/page/add_index

“`
モデル.pluck(カラム名) #指定したカラムのレコードの配列を取得
モデル.find_or_create_by(条件) #指定した条件が存在すれば取得し、なければ作成
“`

https://railsdoc.com/page/model_pluck

https://railsdoc.com/page/find_or_create_by

タグ付け機能のビューにはjQeryのTag-itと使う

https://qiita.com/tyamagu2/items/75eeaa8ef208385aa341

#アソシエーション

[![Image from Gyazo](https://i.gyazo.c

元記事を表示

【Ruby】【paiza】スキルチェック見本問題でよく使う操作メモ

# paizaのスキルチェック見本問題でよく使う操作メモ

皆さんpaiza解いてますか?
paizaのスキルチェック見本問題で、Rubyでよく使う操作をまとめました。

### 改行区切りの数字を取得

“`ruby
array = []
while number = gets
array << number.chomp.to_i end ``` ### 空白区切りの数字を取得 ```ruby line = gets.split(' ').map(&:to_i) ```

元記事を表示

権限のないユーザーが削除することを制限する方法

##目的
以下のコード before_action :redirect, only: [:edit, :update]にdestroyアクションを追加します。削除機能は特定のユーザーのみ実行できる必要があるため、privateアクション内で定義する「特定のユーザーでなければindexのページまでredirectする」仕様にdestroyアクションを追加します。

##手順
以下、現在のitems_controllerを修正します。

“`items_controller.rb
class ItemsController < ApplicationController before_action :authenticate_user!, except: [:index, :show] before_action :set_item, only: [:show, :edit, :update] before_action :redirect, only: [:edit, :update] def index @items = Item.order('create

元記事を表示

Ruby 3.x, Rails 6.x, MySQL 8.x のプロジェクトを CircleCI に設定し RSpec と Rubocop を実施する。

# 概要

前回の記事 [Ruby 3.x, Rails 6.x, MySQL 8.x の Docker 環境構築。](https://qiita.com/goya-hideaki/items/2597b39b966cb37ec9e1) を引き継いで、プロジェクトを CircleCI に設定し、GitHub リポジトリへの push 時に RSpec と Rubocop を自動実施するように設定します。

基本的に以下の CircleCI 公式ドキュメントを参考にしていますので、初期設定の方法などはそちらをご確認ください。
大きく違うのは、Ruby on Rails で MySQL に対応した点です。

– [入門ガイド](https://circleci.com/docs/ja/2.0/getting-started/)
– [言語ガイド: Ruby](https://circleci.com/docs/ja/2.0/language-ruby/)
– [データベースの構成例](https://circleci.com/docs/ja/2.0/postgres-config/)

#

元記事を表示

GMOペパボの社名で学ぶRubyの順列の使い方(ネタ記事)

# GMO「ペパボ」って覚えにくくね?

「[Suzuri]()」、「[minne]()」、「[ロリポップ!]()」などでおなじみGMOペパボ株式会社ですが、ことその独特な社名に至ってはユニークである一方で、Webに関わりがある人たちからも社名の言い間違いを耳にすることがあります。

「ペ」と「パ」と「ボ」で作れる単語を順列を用いて表すと、

“`ruby:Ruby
puts [“ペ”,”パ”,”ボ”].permutation(3).to_a.map(&:join)

“`

“`:出力
ペパボ
ペボパ
パペボ
パボペ
ボペパ
ボパペ

“`

となります。
おお、確かにややこしい…。

さらに重複を許すような音の選び方であれば

“`ruby:Ruby
puts [“ペ”,”パ”,”ボ”].repeated_permutation(3).to_a.map(&:join)

“`

“`:出力
ペペペ
ペペパ
ペペボ
ペパペ
ペパパ
ペパボ
ペボペ
ペボパ
ペボボ
パペペ
パペパ
パペボ
パパペ
パパパ
パパボ
パボペ
パボパ
パボボ
ボペペ
ボペパ
ボペボ
ボパペ

元記事を表示

Ruby勉強#1

#この記事の目的
自分の振り返り用としての投稿です。
Sierから卒業しWebエンジニアになるため、Rubyを1から習得中です。

#■勉強に利用させていただいた動画
大変勉強になりました。投稿者様に感謝です。
本ページはこちらを参考に手でやった記録になります。

#■テスト環境web
paiza io
(https://paiza.io/ja)

#標準出力に出すコマンドはRubyではp
“`
p “hello world!”
p “1”+”1″
p 1+1
“`
#■変数
変数名=値
ここはほかの言語と同じ

####数値の代入
“`
a = 1
b = 2

p a
p b

p a + b
“`
→以下が返ってくる。
1
2
3

####文字列の代入
“`
a1=”ruby”
a2=”on”
a3=”rails”

p a1+a2+a3
“`
 →rubyonrailsが返ってくる

####文字と数字の結合

\#{変数名}を使う

“`
p “今日は#

元記事を表示

Rspec 結合テストコードにてセレクトボックスがある場合の記述方法

#テックキャンプではカリキュラム外であったために自分で調査
※セレクトボックスの結合テストのみの解説なので、それ以外は省略

# 実行コマンド
# bundle exec rspec spec/system/users_spec.rb
##アプリ名/spec/system/users_spec.rb
“`ruby

require ‘rails_helper’

RSpec.describe ‘ユーザー新規登録’, type: :system do
before do
@user = FactoryBot.build(:user)
end

context ‘ユーザー新規登録ができるとき’ do
it ‘正しい情報を入力すればユーザー新規登録ができてトップページに移動する’ do
fill_in ‘nickname’, with: @user.nickname
#⇐この行———————————————————-
select ‘男性’, from: ‘us

元記事を表示

【Ruby】オブジェクト指向について基礎的なあれこれ

#はじめに
今後個人開発でもっと複雑なものや共同開発をしていく上でオブジェクト指向の理解が重要だと考え、勉強のアウトプットとして記事にしました。

**この記事でわかること**
 ・オブジェクト指向の概要
 ・三大要素
 ・オブジェクト指向での設計のポイント

参考にしました→[オブジェクト指向でなぜ作るのか](https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E3%81%AA%E3%81%9C%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC2%E7%89%88-%E5%B9%B3%E6%BE%A4-%E7%AB%A0/dp/4822284654)

#オブジェクト指向の概要
オブジェクト指向という言葉自体はゼロックス社パロアルト研究所の計算機科学者アラン・ケイが70年代生み出した言葉です。その後、自由で曖昧な定義のまま発展を続けたので、どんなものかを説明するのが

元記事を表示

Railsポートフォリオ #3 herokuにデプロイ

こんにちは:smiley:
今回はherokuへのデプロイを行いました。[(前回記事(#3 DB設計))](https://qiita.com/yanoo/items/ce16d20c1dd046cf4c90)

私は、前職(ホテルの料飲部)における、コミュニケーションの課題を解決するアプリを作っているのですが、今回は、

## herokuへのデプロイを行いました
元々はAWSでデプロイするつもりだったのですが(やったことあったので)、難しすぎて、一旦諦め、herokuで手を打つことにしました。。。

## 感じたこと
+ AWSの勉強不足
Qiita記事等を参考にしながら行ったのですが、知識不足でやってるので、どこで間違ったのかわからん、、、、、
もう少し勉強してから出直そうと思いました。

[こちらの記事(【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法【その1〜ネットワーク,RDS環境設定編〜】)](https://qiita.com/yanoo/items/ce16d20c1dd046cf4c90)とかを参考に行ったのですが

元記事を表示

【Rails】JSが読み込まれない時の対処法

railsアプリにて、JSの書き方は間違っていないはずなんだけど動かない!っていうことがありました。

# 原因
DOMが読み込まれる前に、JSが実行されて探しているDOMが見つからずにエラーとなっていた。

# 方法
実行したい処理を間に書いて下さい。
変数にDOMを指定する処理も全てこの中に書くようにして下さい。
そうすると、DOMが全て読み込まれてから実行されます。

“`javascript
document.addEventListener( ‘DOMContentLoaded’, function(){
// 実行したい処理
}, false );
“`

元記事を表示

[Ruby on Rails] データベースの削除の仕方

色々あってDBを作り直すことになったので、その備忘録を書いていきます。
とても繊細なdatabase.ymlなどを修正する際にも使えるので覚えておこうと思います。
ちなみに**シークエルプロ**と言うデータベースを視覚化できるアプリを使っています。

 

##データベースを削除する方法
database.ymlに記載されている、エンコードの設定やデータベース名を誤った状態でデータベースを作成してしまった場合は、一度データベースを削除してから作り直す必要があります。

手順は以下のとおりです。
 
  

**データベースを削除する**
database.ymlを正しい形に修正する
データベースを再度作成する
 

##①データベースを削除する
データベースを削除するためには**rails db:drop**のコマンドを実行します。

“`
% cd ~/projects/データベースを作り直したいアプリケーションのディレクトリ
“`

ディレクトリ移動後に**rails db:drop**
このコマンドを実行することで、該当するアプリケーションのデータベースを削除すること

元記事を表示

Ruby/Railsの環境構築

# これからRuby/Railsの環境構築を行っていきます。

まずは用語から説明していきます。
ご存知の方は飛ばしてもらって構いません。

# シェルとは?
ターミナルで実行されたコマンドを読み取ってくれるOSの窓口役です
ターミナルから入力されたコマンドを読み取って、OSに対して指示を渡し、結果をターミナルに返して表示や実行などの動作をさせます。
このシェルがターミナルとOSの間に挟まって、コマンドによる命令と実行結果の橋渡しをしています。

シェルにも種類があり、プロンプトやコマンド実行後の出力で挙動が若干異なります。

## zsh
zshはシェルの1つでターミナルで

“`
% echo $SHELL
“`

とコマンドを実行すると現在使用しているシェルはzshであることがわかります。
.zshrcに設定を記述して、PATHにアプリケーションの場所を示すことでコマンドを使用可能にします。

## PATH
PATHとは、「環境変数」と呼ばれるOS用の変数のことです。PATHには、複数の絶対パスの情報が保存されており
コマンドが入力されたときに、シェルはPATHに記述された

元記事を表示

銀行振込を忘れないためのwebアプリ

#はじめに
今はもう使われていない振込券をベースに作りました。
![localhost_3000_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784464/bfb40f13-7514-dade-589b-320050a11d34.png)
#なぜ作ったか
– 実家の会社で振込忘れや伝達ミスなどが多発していた
– 督促状が届き面倒な手続きに時間を取られることが多かった
– そんな状態を改善・解決できるのではないかと思った

#開発環境
– 言語
– ruby
– フレームワーク
– rails
– データベース
– mysql
– その他
– https://bank.teraren.com/
– 銀行名、支店名を入力する際に上記のAPIを利用させていただきました

#基本機能
– 振込チケットの管理
未払いの振込チケットを振込期日順に閲覧することができます。
また、見た目で分かりやすいように、いわゆるメガバンクはロゴの色に合わせてチケットの色を変えていま

元記事を表示

Railsで大量のデータを更新する際はin_batchesを使おう

Ruby on Railsのプロジェクトで、大量のデータを更新しようとしたらメモリ不足でエラーとなったため、解決方法をメモ。

こんな感じで、データを更新しようとしていました。

“`ruby
Hoge.all.map do |hoge|
hoge.update(fuga: hoge.foo)
end
“`

しかしデータが数十万件あり、メモリ不足で余裕で落ちました。

そんなときは [in_batches](https://railsdoc.com/page/in_batches)を使いましょう。
デフォルトでは1000件ずつ読み込んで処理してくれます。

“`ruby
Hoge.in_batches do |hoges|
hoges.map do |hoge|
hoge.update(fuga: hoge.foo)
end
end
“`

無事解決!
どれくらいの量のデータが扱われるかは、常に意識しないといけないですね。

元記事を表示

いまさらSlackとLambdaとDynamoを連携させてみた

いまさらですが、LambdaとDynamoを触ってみたのでまとめておきたいと思います。
APIGateway/Lambda/Dynamoなど触ったことのない人の助けになれば幸いです。

今回やってみたことは以下です
![sample.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/874795/9dc00dfa-cf71-da91-4903-8555f830003e.png)
1. SlackのAppにメッセージを送信
2. Slackのevent apiでAPI Gatewayのエンドポイントにリクエストを送る
3. Lambdaで、飛んできたリクエスト内容をDynamoDBに保存
4. Lambdaで登録した旨をSlackに返信

## 作成手順
以下の順序で作成を行います

1. Lambda関数の作成
2. API Gatewayでエンドポイントを作成
3. Slackのevent APIの設定と、メッセージの送信
4. CloudWatchでログを確認する
4. Lambdaでのメッセージ処理

元記事を表示

エラーページを表示させる

###HTTPレスポンスのステータスコードとは

クライアントからのリクエストの結果を返す3桁の整数値のことです。
特定のHTTPリクエストが正常に完了したどうかを示します。
通常はリクエストが成功するとステータスコード200を返します。

###ステータスコードの種類の例

403
アクセス権限がないことを示す。

404
リクエスト先が見つからない、またはページが存在していないためにアクセスができないことを示す。「指定されたページは存在しません」などのエラーページが表示されるケース。

500
webサーバーで何かしらのエラーが発生したことを示す。

503
リクエスト先が一時的にアクセス集中やメンテナンスなどで使用できないことを示す。

一時的に、ソースを変更したら再起動しなくてもリロードされるように設定します。
config/environments/production.rb

“`
config.cache_classes = false
“`

アクションにraiseメソッドを追記してアクセスをすると、強制的に例外の画面が表示されます。
画像はproducti

元記事を表示

OTHERカテゴリの最新記事