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

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

include? の基本![ 使い方:含まれているか判断できます ] 〜基礎アウトプット〜

# `include?` って何?
`include?` はオブジェクトが範囲に含まれているか判断するときや
対象文字列に比較文字列が含まれているか判断するときに使用します。

含まれているときは`true`を、
含まれていないときは`false` を返します。

では使い方を簡単に説明していきます。

##使い方 1
`(始端 .. 終端).include?(比較対象)`
始端から終端の範囲に比較対象は含まれていますか?
ということです。

###文字列の使用例

“`ruby
(“A” .. “E”).include?(“C”)  #A ~ E の範囲に C は含まれていますか?
#=> true

(“a” .. “e”).include?(“C”) #a ~ e の範囲に C は含まれていますか?
 # => false

“`

###数値の使用例

“`ruby
(1 .. 10).include?(5) #1 ~ 10 の範囲に 5 は含まれていますか?
# => true

“`
##使い方 2

`対象文字列.include?(比較文字列)`

元記事を表示

Rails バリデーションの日本語化、レイアウト時に起きた現象

# 某プログラミングスクールに通う転職生の、日々悩める日記

初めまして!某プログラミングスクールに通う転職生です。今回初投稿なのですが、投稿しようと思ったきっかけとしては

エラーにイラつきすぎて、それを同じく初心者プログラマーの方に繰り返して欲しくないからです。

それでは初投稿、書いていきます!!

## 今回の現象

現象としては、Railsに入れたDeviseに、バリデーションを追加したのち、レイアウトと日本語を整えたいと思い

色々いじった後、Sign_up画面で何故かルーティングエラーが発生しました。

Sign_up画面のみです。更新ボタンや、その他のボタンを押しても発生します。

ちなみにLog_in画面やその他の画面では発生しません。

![66491DB9-1786-48D9-AF15-7B01CA56B653_1_201_a.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1156536/324d3bcf-1856-a9e3-6b66-857fef46a735.jpeg)

##

元記事を表示

ストロングパラメーターで指定した情報だけ保存

##はじめに##

今回は学習中に作成した簡易版twitterでストロングパラメーターをアウトプットしていきます。

必要な情報だけをDBに保存していきます
仮に全てのデータ(パラメーター)を受け取る仕様の場合、悪意のあるパラメーターによって第三者にデータを改竄されてしまうなど、セキュリティ上に問題が起きてしまう恐れがあります。
回避するためには、ストロングパラメーターを使用して受け取るパラメーターを制限することが大切です。

##実際にどんな情報が送られてきているか##

このアプリは写真のURLとつぶやきを投稿できるものです。
![スクリーンショット 2021-05-14 19.38.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1264460/bea68535-c148-4241-6a8a-6a048898b514.png)

モデルやビュー等は割愛させていただき下記がコントローラーになります。
実際に投稿ボタンを押したら何が送られてくるのか*binding.pry*で確認します。

“`

元記事を表示

system_specでjqueryをテストする

## 導入

https://qiita.com/Ub_Iwerks/items/c4f28dac6d1922bf32cb

前回の記事で、`:rack_test` → `:selunium`の以降が成功し、無事jqueryなどのDOM操作をrspecでテストできるようになった、わけではありませんでした。

今回はこちらの記事を参考に、正式にDOM操作をrspecでテストできるようになりました。(ありがとうございました!)

https://qiita.com/ngron/items/f61b8635b4d67f666d75

## 結論

結論としましては、前回の記事の設定でDOM操作をテストする為には、以下の3操作が必要でした。

1. chromedriverのDockerイメージを導入する `Dockerfile`
2. テスト実行環境をchromedriverに設定 ← 前回の記事の内容
3. system_spec.rbで`js: true`にする

補足:自分の場合はポート番号が重複するエラーが発生したので(多分そう)、テスト環境のポート番号を変更しました。 `rails

元記事を表示

[Ruby]おすすめ標準添付ライブラリ!

# はじめに
Rubyには、標準添付ライブラリというものがあります。これは、Rubyをより便利に活用出来るツールのことです。
これらを活用出来ることで、自分のプログラミングスキルの幅が広がり、メリットしかありませんので、日々の開発のぜひ参考にしてみてください!

## ファイル/ディレクトリ操作を極める

### Pathname
ファイルパスを表現するクラス。
※Fileクラスと同様のメソッドが使用可能。([こちら](https://qiita.com/ren0826jam/items/24d28839d307ffa825fc#iofile)の記事を参照)

“`ruby
require ‘pathname’

# Pathnameクラスの生成
Pathname.new(‘/tmp’) #=> #
Pathname(‘/tmp’) #=> #

home = Pathname.new(‘~’)

# 連結する
foo = home.join(‘foo.txt’) #=> #

#

元記事を表示

[Ruby]Fiberとはなんなのさ!

# Fiberとは
Fiberを利用することで複数のプログラム間で実行の中断や再開を相互に行わせることができます。
Fiberを用いると「ある処理を途中まで実行して、その後任意のタイミングで、前回の続きから処理を行う」みたいな処理の流れを扱うことが出来ます!

## 基本的な使い方

### Fiberの作成
生成されたファイバは、`Fiber#resume`メソッドにより実行を開始する必要があります。
ファイバの切り替えは自動的に行われないので、自分で切り替える必要があります。

“`ruby
fiber = Fiber.new {
puts ‘Hello, Fiber!’

# 実行されたファイバから親に切り替える
Fiber.yield

puts ‘Hello, (again)’
}

fiber.resume #=> “Hello, Fiber!”

fiber.resume #=> “Hello, (again)”

fiber.resume #=> FiberError: dead fiber called
“`

### 引数と戻り値について

元記事を表示

$ bundle exec rake db:migrate RAILS_ENV=production時のエラーに関して

#はじめに

作成したアプリをAWSにデプロイしようと作業しており、「$ bundle exec rake db:migrate RAILS_ENV=productionコマンドを入力した際に発生したエラーを解決するまでの道のりです。
同じエラー内容が出ている方の一助になれれば幸いです。

#エラー解決に向けて
unicornをインストールして、「$ bundle exec rake db:migrate RAILS_ENV=production」コマンドを入力すると、

“`
ec2-user@ip-10-0-0-42 アプリ名]$ bundle exec rake db:migrate RAILS_ENV=production
rake aborted!
ActiveRecord::AdapterNotSpecified: ‘production’ database is not configured. Available: [“default”, “development”, “test”]
“`
とエラー表示がされました。

どうも’production’ databas

元記事を表示

[Ruby]Threadとはなんなのさ!

# Threadとは
スレッド(Thread)とはメモリ空間を共有して同時に実行される制御の流れのことで、
スレッド(Thread)という処理を使えば、`複数の処理を並行して実施することが可能`です。
RubyではThreadクラスを使用します。

## 基本的な使い方

###Threadの作成
Threadの作成には、`Thread#fork`もしくは`Thread#new`などを使う

“`ruby
files = %w(.xinitrc .zshrc .vimrc)
threads = files.map {|file|
Thread.fork {
num = File.readlines(file).length

“#{file}: #{num}”
}
}
# スレッドの終了後に戻り値を返す
threads.map(&:value) #=> [“.xinitrc: 58”, “.zshrc: 51”, “.vimrc: 209”]

# 単にスレッドの終了を待つ
threads.join
“`

### Threadの取得

“`rub

元記事を表示

[rails] DateTime#agoがRails5.2まで1.dayといった引数を受け付けていたが6.0からダメになった原因を調べた

Rails6.0への更新中、理由が不明だった為調べました

“`ruby
# DateTime#agoの実装
def ago(seconds)
since(-seconds)
end
“`

“`ruby
# rails 5.2
DateTime.current
=> Fri, 14 May 2021 16:20:00 +0900
DateTime.current.ago(1.day)
=> Thu, 13 May 2021 16:14:26 +0900

# rails 6.0
DateTime.current
=> Fri, 14 May 2021 16:31:41 +0900
DateTime.current.ago(1.day)
TypeError: not an integer
from /bundle/gems/activesupport-6.0.3.7/lib/active_support/core_ext/date_time/calculations.rb:113:in `Rational’
“`

5.2ではagoで呼ばれている`DateTime#sinc

元記事を表示

ruby 似た文字を除外したランダムな英数字

## この記事について
今回のネタのようなことを書いてる記事があまりなかったから、エセファーストペンギンになるがために投稿してやる。

## やりたいこと
アルファベット大文字(A-Z)、アルファベット小文字(a-z)、数字(0-9)から構成されるランダムな4文字を生成させるコードの発表会。

ただし、`1`と`l`のような紛らわしい文字列は除外させる。

## 生成するやで

“`ruby
similar_str = “1lI9q0Oo”
SecureRandom.alphanumeric(20).delete(“1lI9q0Oo”)[0..3]
# => “4hA8”
“`

– `SecureRandom.alphanumeric(生成する文字数)`
– A-Z, a-z, 0-9 の合計62種類から成る、ランダムな英数字を生成する。
– `delete(消したい文字列)`
– 等しい要素が見つかった場合にその要素を削除する。
– `[0..3]`
– 指定の位置から指定の長さの文字列を取得する

元記事を表示

【Rails】実務未経験の僕が共同開発に参加して学んだこと

# 0. はじめに
はじめまして!

この記事では、「実務未経験の私が Rails 共同開発に挑戦し、そこで学んだことや躓いたこと、反省した点」などについてまとめています。

チームでの開発現場経験を積むことで、「コミュニケーションの適切な取り方」や「わからない部分の質問の仕方」、「コンフリクトの解消の仕方」など、一人での学習では決して学ぶことのできない貴重な経験を積ませていただくことができました。

今回はそのような共同開発の現場で実際に学んだことをまとめて、今後の自分の成長につなげることができたらなと考えております!

1. 自己紹介

|                                         
|:-:|
|![3MBのコピー.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1209814/17f23ad9-9bdb-4d11-4722-b76154a01e97.jpeg)|)

まずは簡単な自己紹介からさせて頂きます!

– スペック

– 24歳

元記事を表示

Rubyで?以降の文字列を消す

str = “https://www.hogehoge.com/articles/DA3S14897493.html?=nantoka_kantoka_article”
puts str.sub(/\?(.*)/) {”}

元記事を表示

RubyXLで詰まった部分の解消方法と基本動作について

# はじめに
本記事は基本的に`RubyXL ver.3.4.0`を想定して記載を行っています

ver3.4.0からリソースの無駄を抑えられるように用途に応じたメソッドが呼び出せるようになりました
どちらかと言えば、呼び出さないと使えなくなったので`undefined method Error`が出る場合は確認してください
基本的には以下の通りです

require 'rubyXL/convenience_methods/cell'
require 'rubyXL/convenience_methods/color'
require 'rubyXL/convenience_methods/font'
require 'rubyXL/convenience_methods/workbook'
require 'rubyXL/convenience_methods/worksheet'

面倒なら下記コードですべてを呼び出すことができます

require 'rubyXL/convenience_methods'

# 発生した課題とその対応

元記事を表示

Railsにおけるnew, build, save, createの違い

# new

インスタンスをメモリ上に作成する。

“`ruby
user = User.new(name: “Mike”)
“`

# build

newのエイリアス。
newと全く同じ動作をする。

# save

メモリ上に存在するインスタンスをデータベースに保存する。

“`ruby
user = User.new(name: “Mike”)
user.save
“`

# create

newとsaveをまとめて実行する。

“`ruby
user = User.create(name: “Mike”)
“`

元記事を表示

Rubyのdeleteメソッドで複数の文字列を削除

# deleteメソッドについて
最近paizaで勉強中なので、メモ用に残します。

### deleteメソッド
deleteメソッド、delete!メソッドは文字列から、指定の文字列を削除するメソッド。

### 使用例
“`ruby
str = ‘abcde’
puts str.delete(‘a’) # bcde
puts str.delete(‘abc’) # de
“`

みたいな感じですね。。
そんなの言われなくてもわかってるよ!という方がほとんどですね

しかし、一つの文字列から複数の文字を削除したい時はどうでしょうか

“`ruby
str = ‘abcde’
puts str.delete(‘a’ ‘c’) # bde
“`

こうします。
カンマがいらないんですね〜
なんでなのかはわかりませんが..笑

もし知ってる方がいれば教えてください!

以上

元記事を表示

[初心者向け]SystemSpecの基本的な使い方とサポートモジュールについて

# はじめに
初めまして、takumi(@takumi73)と申します。
今回、RspecのSystemSpecについて学習したので、簡単ではありますが、基本的な使い方についてまとめていこうと思います。
内容に誤りがありましたら、ご指摘頂けると嬉しいです。

# SystemSpecでできること
従来の統合テストはFeatureSpecであり、それをより便利かつスピーディーに開発できるようにしたものがSystemSpecになる。
利点としては以下が挙げられる
・ブラウザ上で実行することがデフォルトで可能になった統合(E2E)テスト
・エラー発生時スクリーンショットで画面を確認できる

# 環境
capyrbaraとfactory_botを使用しています。
ruby 2.6.3
Rails 6.1.3.2
factory_bot 6.1.0
factory_bot_rails 6.1.0
capybara 3.35.3
# SystemSpecの基本的な使い方
※事前準備に関してはわかりやすい記事がたくさんあるので今回は省略させて戴きます。
[【Rails】はじめてのSystem

元記事を表示

Herokuを使用したデプロイの方法

### Heroku CLIをインストール
—-
下記のコマンドを実行するとherokuというコマンドが使用できるようになり、ターミナルからHerokuへアクセス可能になります。

“`
% brew tap heroku/brew && brew install heroku
“`
インストールが完了したら下記のコマンドを実行してバージョンを確認します。

“`
% heroku –version

heroku/7.40.0 darwin-x64 node-v12.16.2
“`
上記のようにバージョンが出力されれば成功です。(バージョンの値は実際と異なる場合があります。)

### Herokuにログイン

下記のコマンドを実行し、メールアドレスとパスワードを入力します。

“`
% heroku login –interactive
“`

### Heroku上にアプリケーションを作成

下記のコマンドを実行。

“`
% heroku create アプリ名
“`
下記のコマンドを実行し、正しく設定できたことを確認

“`
% gi

元記事を表示

while true do の使い方

whileの使い方

ex1.条件によって繰り返し処理を行う場合
“`ruby
while 条件式 do
処理するアクション
end
“`
ex2.プログラムを終了させず同じ処理を繰り返すループ処理を行う場合
“`ruby
while 条件式 do
処理するアクション
end
“`

問題.1
以下の仕様を満たすアプリケーションを作成してください。
仕様
プログラムの実行を行うと、
①「[0]:体重を表示する、[1]:終了する」という選択肢が表示され、数字を入力することができる
② 0を入力すると「80kg」と表示され、上記条件①が繰り返し実行される。
③ 1を入力するとアプリケーションが終了する

“`ruby
while true do
puts “[0]:体重を表示する”
puts “[1]:終了する”
input = gets.to_i
if input == 0
puts “80kg”
elsif input == 1
exit
end
end

“`

元記事を表示

草野球の出欠確認Webアプリを作ろう! part.6

これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。

[<<前回の記事](https://qiita.com/tomodachi_uec/items/2dab415fe63f91b116bf) ※前回導入していたRspecですが、なぜかchromedriverが動作しなくて原因も不明だったので、いったんTDDは凍結とします(そのままずっと凍結の可能性も...)。 ##今回やったこと ###スケジュールの編集 schedulesコントローラーのeditとupdateのアクションを整える。 ```rb:app/controllers/schedules_controller.rb def edit @schedules = Schedule.find(params[:id]) end def update @schedules = Schedule.find(params[:id]) if @schedules.update(schedules_params) redirect_to sc

元記事を表示

知らない人に勝手に出品した商品を編集させない!

##はじめに##

現在フリマアプリを作成中です。

商品の出品者ではない人が編集できるURLを直接打ち込み、編集できるという問題を解決していきます。

想像してみて下さい。
自分が30,000円で出品した商品が勝手に1,000円に編集されて売れてしまった場合…

そんな事にならないように利用して下さるユーザーが安心して使えるように記述していきましょう!

##現在のコントローラの状況##
itemテーブルには出品された商品情報が入っています。
(名前・値段・商品説明・商品状態など)
編集できる*edit*アクションと更新ができる*pdate*アクションを見ていきます。

“`.rb
def edit
@item = Item.find(params[:id])
end

def update
if @item.update(item_params)
redirect_to item_path
else
render :edit
end
“`

editアクションでは編集したいレコードを@itemに代入し、

元記事を表示

OTHERカテゴリの最新記事