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

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

[Ruby編]等差数列

#[Ruby編]等差数列を解いてみる
#問題
以下のような数列を出力するプログラムを作りましょう。

5 8 11 14 17 20 23 26 29 32

最初の数字が5で、3ずつ増加していく事がわかります。
一般的にこれを初項5、公差3の等差数列といいます。

このような数列を出力するプログラムを作りましょう。
初項 m が与えられ、公差 n が与えられるので 10番目までの数字をスペース区切りで出力するプログラムを作成してください。
#入力される値
入力は以下のような初項 m、公差 nが半角スペース区切りのフォーマットで与えられます。

入力値最終行の末尾に改行が1つ入ります。

m n

#期待する出力
初項 m ,公差 n の等差数列を1〜10番目までスペース区切りで出力して下さい。
#入力例1
3 3
#出力例1
3 6 9 12 15 18 21 24 27 30
#入力例2
5 10
#出力例2
5 15 25 35 45 55 65 75 85 95
#入力例3
1 3
#出力例3
1 4 7 10 13 16 19 22 25 28
#私の答え
“`java:

元記事を表示

downcase,sliceメソッドの応用

「a=abc」,「b=HiAbc」という二つの変数がある時、a,bいずれかの文字列がもう片方の文字列の最後にある場合にTrueを返すプログラムの作成方法です。
今回の場合、aのabcがbの後ろ三文字に存在するためTrueとなります。

以下二つのメソッドを使用することで作成することができます。

## メソッドの使用例
– 大文字を小文字に変換するためにはdowncaseメソッド

“`java:ruby
a = “AbC”
a_down = a.downcase
// これにより a_down には abc が入る
“`

– 特定の位置にある文字列などを切り抜きたい場合はsliceメソッド

“`java:ruby
a = “AbC”
a_slice = a.slice(1)
// これにより a_slice には b が入る
“`

## 回答例

“`java:ruby
def compare(a, b)
a_down = a.downcase
b_down = b.downcase
a_len = a_down.length
b_len = b_do

元記事を表示

[Rails]redirect_toとrenderの違いについて[初心者]

#はじめに
いきなりですが、“redirect_to“と“render“って、初めて見たときは、両者の違いがよく分からなかったですよね。
深掘りして、一緒に学んでいきましょう!

#redirect_toとrenderの違い
redirect_to: HTTPリクエストをサーバーに送り、ユーザーはそこから返ってくるHTMLが表示される。
render: アクションの中で、呼び出すViewファイルを指定するメソッド。

言葉だけだと、分かりづらい部分があると思うので、それぞれの**処理の流れ**について解説します。

#それぞれの処理の流れについて

“`ruby:redirect_toの処理の流れ
①controllerの処理でredirect_toを実行
②redirect_toの引数で指定したURLにHTTPリクエスト(GET!!)を実行
③HTTPリクエスト(GET!!)されたURLに対応するルーティング処理を実行
④ルーティング処理に対応したcontroller、アクションが呼び出され処理を実行
⑤処理に応じたviewのレンダリングを実行
“`

①controll

元記事を表示

Rails6 チェックボックスにチェックが付いている値を配列にしたい

**フォームのチェックボックスにチェックが付いている値を取得して配列にする。**

“`ruby
ActionController::Parameters {“authenticity_token”=>”DoVsq/+dLxgEzm0kXJUo4SWmHx5CBR1GmeV+yNaAeYcDmyMg8nWcMDNSWeMY**************==”, “hogehoge”=>“0”, “bbb”=>”1”, “ccc”=>”1”, “ddd”=>”1”,} permitted: false>, “commit”=>”検索”, “controller”=>”distributions”, “action”=>”search”} permitted: false>
“`

**こんな感じでフォームがくるので**

“`ruby
params[:hogehoge].permit!.select { |key, value| value == “1” }.keys
[“bbb”,”ccc”, “ddd”

元記事を表示

【AtCoder】ABC183のD問題をRubyで解く

茶色コーダーがABC183のD問題をRubyで解いてみました。

## 問題

[AtCoder Beginner Contest 183](https://atcoder.jp/contests/abc183)

[D – Water Heater](https://atcoder.jp/contests/abc183/tasks/abc183_d)

> 給湯器が $1$つあり、毎分$W$リットルのお湯を供給することができます。
> $N$人の人がいます。$i$番目の人は時刻$S_i$から$T_i$までの間(時刻$T_i$ちょうどを除く)、この湯沸かし器で沸かしたお湯を毎分 $P_i$リットル使おうと計画しています。お湯はすぐ冷めてしまうので、溜めておくことはできません。
> すべての人に計画通りにお湯を供給することはできますか?

## 制約

> $1 \leq N \leq 2 \times 10^5$
> $0 \leq S_i \leq 2 \times 10^5$
> $1 \leq W, P_i \leq 10^9$
> 入力はすべて整数

## 入力

> $N$ 

元記事を表示

RSpecで「undefined method `create’」というエラーが出た

Everyday Rails – RSpecによるRailsテスト入門でコントローラーにおけるRSpecのテストを学んでいたときに、自分にとって新しい学びがあったのでアウトプットしたいと思います。

# 問題

本日もRSpecについて勉強していたところ、

“`ruby:reviews_spec.rb
review = FactoryBot.create(:review)
“`

という記述を

“`ruby:reviews_spec.rb
review = create(:review)
“`

という省略系にできることを知り、自分もやってみました。

しかし、「bundle exec rspec」を実行した後、以下のようなエラーが出てしまいました。

“`html:ターミナル
Failure/Error: review = create(:review)

NoMethodError:

元記事を表示

リファクタリングをいつやるか?

普段は Rails を書いていますが、リファクタリングっていつやるのがいいのかと言うのを考えていました。

`リファクタリング:Rubyエディション` を読んでいていろいろと気づきがあったのでそのまとめです。

# リファクタリングとは
ありきたりですが、忘れるので書いておきます。

> プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。

[wiki:リファクタリング 2020/11/15](https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0))

# いつリファクタリングするのか?
リファクタリングは常にやりつつ開発をしていくというのがよく言われてますが、具体的にいつやっていくのか?がよく分かっていませんでした。

まずは既存のコードを改修、機能追加することを例に考えます

元記事を表示

文字のだるま落とし(ruby編)

#[Ruby編]文字のだるま落とし
#問題
だるま落としは 5 段の木片からなり、その木片には 1 つにつき 1 つの英字小文字が書いてあります。
木片を飛ばす前の文字列と、飛ばしたのが何段目の木片であったかが与えられるので、木片を飛ばした後の文字列を求めるプログラムを作成してください。
#入力される値
入力は以下のフォーマットで与えられます。

S
N
・1 行目には、木片を落とす前の文字列を表す S が与えられます。
・2 行目には、何段目の木片を落とすかを表す整数 N が与えられます。
・入力は全部で 2 行となり、最後に改行が一つ入ります。
#期待する出力
木片を落下させた後にできる文字列を出力してください。

末尾に改行を入れ、余計な文字、空行を含んではいけません。
#入力例1
apple
2
#出力例1
aple
#入力例2
water
5
#出力例2
wate
#私の答え
“`java:
a = gets.chomp
b = gets.to_i
str = a.slice!(b – 1)
print a
“`
#今回のポイント
###1行目で文字列の呼び出し
###2

元記事を表示

RailsにおけるModelの関連付け

#概要
モデル間の関連付けは、アプリケーションを作る上で基本中の基本になると思うので、復習の意味を込めてまとめてみます。

#関連付けとは
モデル間の関連付けとは、データベースのテーブル間を外部キーを使用し関連付けることです。
これを行うことで、必要なデータを簡単な記述で呼び出したり、データを削除する際、関連したデータを同時に削除できたり非常に便利です。

#一対多の関連付け
関連付けの中で代表的なのは、一対多の関連付けだと思われます。
一対多の関連付けとは、あるテーブルの一つのレコードが別のテーブルの複数のレコードと関連付くことです。
例:UserモデルとPostモデルを関連付ける

“`ruby:app/models/user.rb
class User < ApplocationRecord has_many :posts end ``` ```ruby:app/models/user.rb class User < ApplocationRecord belongs_to :user end ``` has_manyメソッドを使用すると「〜をたくさん持っている」、

元記事を表示

deviseでログアウト時に確認ページに遷移させる

# はじめに
railsでdeviseをしようしたログインログアウト機能を実装していて、
ログアウトした際に確認ページに遷移するように実装していたところ
つまずいたので記事にしようと思います。
さらに良い方法とかがあればコメント欄か編集リクエストに記載願います。:bow_tone2:

# バージョン情報
– ruby 2.6.5
– rails 6.0.3.3

# 前提条件
– hamlでの記載(gem ‘haml-rails’)
– deviseが導入済みでログインができている

# コントローラーの変更
sessions_controllerの**respond_to_on_destroy**がデフォルトで記述されていて
root_pathに遷移されるようになっていました。
なのでここのコードを削除します。
そこに**render ‘遷移先URL’**を記述することでURL先のページに遷移することができます。

~~~ruby
# controllers/users/sessions_controller.rb

def destroy
signed_out = (Devi

元記事を表示

【個人メモ】RailsアプリをAWSへデプロイする際につまづいたことまとめ

## index
下記の記事の通りにRailsアプリをAWSへデプロイする際につまづいたことを個人的な備忘としてまとめました。

(下準備編)世界一丁寧なAWS解説。EC2を利用して、RailsアプリをAWSにあげるまで
https://qiita.com/naoki_mochizuki/items/f795fe3e661a3349a7ce
https://qiita.com/naoki_mochizuki/items/22cfbf4bf7ec95f6ac1c
https://qiita.com/naoki_mochizuki/items/814e0979217b1a25aa3e
https://qiita.com/naoki_mochizuki/items/5a1757d222806cbe0cd1

## RDSインスタンスが生成できない
RDSの設定をして、「データベースの作成」をクリックすると、こんなエラーが発生。

“`
DB Subnet Group doesn’t meet availability zone coverage requirement. Please ad

元記事を表示

Railsのサーバーが起動できない時の対処法

# はじめに
初めまして。
私は未経験エンジニアとして転職するべく、1週間前にMacBookProを購入し、Progateで学習をしている者です。
早速ですが、Ruby on Railsの環境構築をする時に詰みました。

# rails s が起動しない
Progateに言われるがままAtom, Homebrew, rbenv, Railsをインストールし、後はローカルでサーバーを建てるだけ。
しかし、

“`
rails s
“`

と入力すると

“`
Could not find gem ‘rails (~> 6.0.3, >= 6.0.3.4)’ in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
“`

何のことやら。
とりあえず

“`
bundle install
“`

と入力しろと書いてあるので実行してみます。

“`
An error occurred while installing bindex (0.8.1)

元記事を表示

Ruby on Railsの開発環境をDockerで構築する方法(Rails 6.x)

[Docker公式手順](https://docs.docker.com/compose/rails/)を参考に、Rails 6系で Dockerの開発環境を構築する手順を詳解します。

各コマンドの詳しい解説は私が以前に書いた [Rails5系での手順](https://qiita.com/tmasuyama/items/d12f9ebce7644f18a047) で解説しているので、本記事では割愛します。

## Rails プロジェクトを作成

“`
$ docker-compose run web rails new . –force –no-deps –database=mysql
“`

## コンテナをビルド

“`
$ docker-compose build
“`

## データベースファイルの修正

上記実行後、config/database.yml ファイルを下記の通りにまるっと修正します。

“`config/database.yml
default: &default
adapter: mysql2
encoding: utf8mb4

元記事を表示

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

火曜日から本格的に最終課題の学習にはいったのですが、火曜日から日曜日までで6割ぐらいは進めた(?)と思います。この調子ですすめて22日までは必要な作業すべてを終わらせたいですね。それが終われば自分のポートフォリオを進めれる、、、ぐへへへ(変人感)
復習に入っていきたいところですがその前に、最終課題とはなんなのか、どんなことをやるのか少し話していきたいと思います。最終課題ではメルカリのようなフリマアプリの作成を通してサーバーサイドの実装を行っていきます。フロントサイドに関してはすでに用意されているのでやらなくても大丈夫です。この最終課題と今までの学習内容の違いはなにかというと、目標を達成(機能実装)するための手順を自分で考えないといけないところです。今までのカリキュラムだと、テキストに沿って決められたことをこなしていけばよかったのですが、最終課題においては機能実装を行うためにどのような工程が必要か自分で道筋を立てながら学習していくことになります。
例えば、ユーザー登録機能を作るならカラムの洗い出しとDB作成、必要なアクションの定義などなどがあります。最終課題以前だとカリキュラムに書かれた

元記事を表示

多言語からみるマルチコアの活かし方

# 多言語からみるマルチコアの活かし方
# はじめに
近年では1つのCPUに複数のコアが搭載されたマルチコアが一般的になっています。
しかし、現状のプログラミング言語ではエンジニアが意識せずにマルチコアをしたプログラムを作ることは難しいです。
そこで、様々な言語から見たマルチコアの活かし方について説明していきます。

# プロセスとスレッド
プロセスとは1つ1つのアプリケーションといった実行中のプログラムのことで、スレッドは CPU利用の単位です。プロセスは次のように1つ以上のスレッドを持っており、CPUのコア数分だけスレッドを処理することができます。(また、近年では[SMT](https://ja.wikipedia.org/wiki/%E5%90%8C%E6%99%82%E3%83%9E%E3%83%AB%E3%83%81%E3%82%B9%E3%83%AC%E3%83%83%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0)という技術によって1つの物理コアで2スレッドといった複数のスレッドを処理することができます。2コア4スレッドみたいなやつです)
![スレ

元記事を表示

【Rails】テーブルのカラム名の変更方法

#テーブルのカラム名の変更方法について

Railsでテーブルのカラム名の変更方法についてまとめました。
ステップとしては下記の通りです。

① migrationファイル作成
② migrationファイルの編集
③ データベースへ反映

今回は下記のようにカラム名を変更します。

変更前
`wheather`

変更後
`weather`

|モデル名|カラム名(変更前)|カラム名(変更後)|
|:—–:|:———-:|:———–:|
|users | wheather | weather |

##① migrationファイル作成
まずはカラム名を変更するためのmigrationファイルを作成します。

`$rails generate migration rename_【変更前のカラム名】_column_to_【モデル名(複数形)】`

今回は
`$rails generate migration rename_wheather_column_to_users`
と記述する。

##② migrationファイルの編集
`

元記事を表示

[初心者]一気に複数行のインデント修正ができるワザ「矩形選択(ブロック選択)」について

#はじめに
Railsなどで、コードを打ち終わった後に、全体のバランスを整えたいと思う時ってありますよね。
コードを考えるのに夢中になってしまい、見返してみたら、インデントがバラバラで、めちゃくちゃ見にくいバランスになってしまっていたり。
また、複数の要素をまたぐ形で、親要素を後から追加しようと思って、子要素の全ての行に対して、1スペース分のインデントを空けなければならない時もあると思います。
プログラミング駆け出しの私は、インデントを空ける為に、ひたすらTABキーを打ち続けていました。

そんな中、「矩形選択」なるワザを知ってから、世界が変わりました。
知っている方も多いと思いますが、もし使っていないor知らない方がいたら、非常にもったいないと思いますので、この便利な技を共有させてもらいます。

#こんな時ってどうしてますか?
次のコードをご覧ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/824345/adbff8d9-ce8c-087f-eab5-28f907a23bc6

元記事を表示

[Rails][ jQuery]フォームの入力ならびに選択が完了するまで送信ボタンを押せないようにする。

# はじめに
今回は、jQueryを使って、フォームの入力ならびに選択が完了するまで送信ボタンが押せないように設定していきます。

# 完成イメージ
![submitButtonJs.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/b556ddf7-7b7b-f2a5-04e4-272bbb477ab0.gif)

# 記事を書いた目的
情報の共有ならびに、自身の備忘録として執筆する。

# 導入した目的
誤送信を防ぎ、ユーザビリティを向上させるため。

# 環境
MacOS 10.15.7
ruby 2.6.5
Ruby on Rails 6.0.0

# 前提条件
– jQueryが導入済みであること。
– 画像の複数枚投稿機能を実装している。

#記事執筆者の状況
##テーブル
![Untitled Diagram-ページ2 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683220/281c6

元記事を表示

`Array#index` は途中から探索できない、 `String#index` はできる

環境 : Ruby 2.7.1

リファレンスマニュアル:

* [`Array#index`](https://docs.ruby-lang.org/ja/latest/method/Array/i/index.html)
* [`String#index`](https://docs.ruby-lang.org/ja/latest/method/String/i/index.html)

例えば、「各要素が0と1のみから成る配列から、1であるインデックスを探して何か処理する」ことを考える。探すだけなら `each_with_index` などで可能だが、元の配列を書き換える(続きの探索に影響しうる)など複雑な処理である場合はループ文で地道に頑張る必要がある。

Rubyの場合はインデックスをループで回さなくても **`Array#index`** で位置を特定できる。しかしこれには欠点があり、**前回の続きから探索するということができない**。

“`ruby
seq = [1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1]

i

元記事を表示

【Rails】link_to で formatの指定

タイトルのとおり、`link_to`メソッドでフォーマットを指定する方法についてです

かなり簡単ですが、意外と記事がヒットしなかったので備忘録的として残しておきます

## そもそもformatって?
出力形式のことです
通常はhtml形式で、htmlファイルがレンダリングされてますよね
他にもjson形式やpdf、csvなどがあります

今回はPDFの出力を想定してやってみます

## linkの書き方
pathの引数にformatを指定するだけです!

“`slim:slimファイル
= link_to ‘表示名’, xxx_path(format: :pdf)
“`
他にidを指定したり、parameterを設定する場合にも同じ様に引数に突っ込んじゃってOKです

“`slim:slimファイル
= link_to ‘表示名’, xxx_path(format: :pdf, id: @post, parameter_name: parameter_content)
“`
## コントローラでの処理
コントローラではformatを指定して処理を記述すればOK
pdfの場合

元記事を表示

OTHERカテゴリの最新記事