Ruby関連のことを調べてみた2022年01月10日

Ruby関連のことを調べてみた2022年01月10日

【devise】暗号化前後のパスワードが一致しているか判定するメソッド

## 実現したいこと
Railsでdevise gemを使っている環境にて、暗号化前のパスワードが暗号化後のパスワードと一致しているか確認したい。
例えば、以下のようなケースです。

– 「このパスワードで設定したはずだがログインできず、パスワードがちゃんと設定されてるか確認してほしい」という問い合わせに対して調査する場合
– 有効期限を持たせた複数のパスワードを、過去履歴を含めてDBに保持しており、古いパスワードが入力された場合に「それは古いパスワードです」とアラートを出したい場合

deviseでは、パスワードは暗号化されDBに保存されているため、DBのレコードを参照するだけだと、元のパスワードがどんなものだったかわかりません。

## 解決方法
「入力されたパスワードを自力で暗号化したものでDBを検索する」という方法もありますが、そこまでしなくても一発でわかる`valid_password?`メソッドがdeviseで用意されています。
レシーバにはActiveRecordインスタンス(パスワードが保存されたレコード)、引数に暗号化前のパスワードを指定します。

## 基本例

元記事を表示

Title testing

This is testing

元記事を表示

[Ruby] Stringクラスのinclude?メソッド

学習したことのアウトプットとして

# include?メソッド
Rubyの組み込みライブラリ
指定した値が含まれているかを判定するメソッド
指定した値が含まれている場合はtrueを、含まれていない場合はfalseを返り値として返す

### Arrayのinclude?メソッドを使用する場合
指定した値が、配列中に含まれているかを判定する

“`ruby
a = [ “a”, “b”, “c” ]
a.include?(“b”) #=> true
a.include?(“z”) #=> false
“`

### Stringのinclude?メソッドを使用する場合
文字列中に部分文字列が含まれていれば真を返す

“`ruby
“hello”.include? “lo” #=> true
“hello”.include? “ol” #=> false
“hello”.include? ?h #=> true
“`

※補足等がありましたらコメントいただけると幸いです

元記事を表示

Neri を使って Ruby スクリプトを実行ファイル(.exe)に変換して配布する

Ruby で書かれたスクリプトを Ruby の入っていない Windows 環境に向けて配布するツールとしては、[OCRA](https://github.com/larsch/ocra) という gem が有名です。

しかし OCRA にはいくつかの欠点[^1]があったため、[Neri](https://github.com/nodai2hITC/neri/blob/main/README.ja.md) という gem を作成しました。このたび ver 1.0 を公開し、今までより多くの Ruby スクリプトを実行ファイルに変換できるようになったので、Neri を使って Ruby スクリプトを実行ファイルに変換するチュートリアルを書いてみたいと思います。

[^1]: 作成当時は OCRA には「日本語ユーザー名の環境では実行できない」という欠点があったのですが、現在は解消されたようです。ただ、x64 版の Ruby を使っていると libssp-0.dll や libgmp-10.dll がデフォルトでは同梱されずエラーになることがあるようで、その場合

“`
ocra

元記事を表示

rails 7.0では`config/initializers`配下のファイルが少なくなっている

# 概要

`rails new`直後の`config/initializers`配下の初期化ファイルの数が多くユーザの認知的負荷につながっていました。
その中には必ずしもすべてのアプリケーションに必要とは限らない設定や、過去のアップグレードの中で既に不要になっている可能性がある設定が存在していたため、今回ファイル構成が見直され不要あったと判断されたファイルが削除されました。

## rails7.0以前

バージョン7.0以前のrailsでは`rails new`時にアプリケーションの初期設定のファイルが`config/initializers`配下に10ファイル作成されていました。

“`
$ rails -v
Rails 6.1.4.4
$ rails new sample_app
$ tree config/initializers/
config/initializers/
├── application_controller_renderer.rb
├── assets.rb
├── backtrace_silencers.rb
├── content_security_

元記事を表示

「フィボナッチ数を出力せよ」をRubyで

https://qiita.com/Nabetani/items/2441696a019317173f61

鍋谷さんの課題をやってみた。

#コード

めっちゃ恥ずかしいのだけれど、素朴なやり方しか思いつかなかった。

“`ruby:Ruby
b, c = ARGV.map(&:to_i)
tm = Time.now

nxt = 1 + c
b1 = 1
s, t = 0, 1
(0..).each do |n|
break if Time.now – tm > 1.0
if nxt == n
str = s.to_s
result = “f(#{n})=”
result << if (l = str.length) <= 5 str else str[0, 2] + "(ommit #{l - 4} digits)" + str[-2, 2] end puts result b1 *= b nxt = b

元記事を表示

【Ruby】処理に名前をつけて使おう② calculate_price_with_taxメソッド

※初心者向け
※アウトプット練習の為

開発環境
rails 6.1.4.1
ruby 2.6.5

##問題内容##
以下のプログラムを実行するとエラーが起きます。
①エラーが起きた原因
②正しいソースコード(引数を用いたコードにしましょう)
をそれぞれ答えてください。
**実行したプログラム**

“`ruby
price = 300

def calculate_price_with_tax
tax = 0.1
puts price + price * tax
end

calculate_price_with_tax

“`

##解答##
**①エラーが起きた原因**
メソッドの外側で定義した変数は、メソッドの内側では使えない。そのため、1行目のpriceはcalculate_price_with_taxメソッドの中では使えずにエラーが起きる。

**②正しいソースコード**

“`ruby
price = 300

def calculate_price_with_tax(price)
tax = 0.1
puts price + price * ta

元記事を表示

Railsの関連付けのオプションについて

## 概要
前回のモデルの関連付けの種類の記事の続きです。
モデルの関連付けの際に使用できるオプションについてアウトプットしていきたいと思います。
[前回の記事](https://qiita.com/soicchi/items/306206fb3eed1d377c6a)

## 環境
ruby: ‘3.0.1’
rails: ‘6.1.4’

## 前提
今回説明するにあたって下記のモデルを想定しています。

usersテーブル

|id|name|
|:–:|:–:|
|1|user1|
|2|user2|

departmentsテーブル(所属部署を管理するテーブル)

|id|name|
|:–:|:–:|
|1|営業部|
|2|開発部|

Assignmentsテーブル(所属部署を管理するテーブル)

|id|user_id|department_id|
|:–:|:–:|:–:|
|1|1|1|
|2|1|2|
|3|2|1|

## オプションの種類
### 1. through
`through`は__多対多__の関係のモデル同士を関連付ける際に、そのモデル

元記事を表示

Rails 7.0.1 のプロジェクトで RSpec 実行環境をセットアップ

Ruby 3.0 x Rails 7 のプロジェクトで RSpec の実行環境を作る方法をメモ的に記します。
具体的には **RSpec と FactoryBot** gem をインストールして設定していきます。

“`
# 環境情報
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]

$ rails -v
Rails 7.0.1
“`

結論からいうと Rails 7 独自の設定は特に必要ありません。

# プロジェクトを作成
Rails 7 では `rails new` のオプションでフロントエンド関連の色々を指定できますが、特に指定してません。

“`
$ rails new rails7_rspec
“`

# RSpec 環境用の gem をインストール
rails new した時に rails7_rspec ディレクトリに生成された Gemfile に追記します。

“`
group :development, :test do
gem “debug”, pla

元記事を表示

【Rails】paramsについて

##paramsとは?
→データの入れ物

##どんなデータが入ってるのか?
基本的には以下の2種類の方法で収集されたデータが入ってる。
・投稿フォームなどからPOSTで送信されたデータ
・getのクエリパラメータ

>【クエリパラメータとは?】
例えば、基本のURLが「https:// ○△×□.jp/」だとして、基本のURLにクエリ文字列(URLパラメーター)を加えると「https:// ○△×□.jp/?●=▲×■&○=△×□」となります。
「?●=▲×■&○=△×□」の部分が、クエリパラメーター(URLパラメーター)です。
引用:https://online.dhw.co.jp/kuritama/query-string/

元記事を表示

[Ruby] Stringクラスのindexメソッド

学習したことのアウトプットとして

# indexメソッド
Rubyの組み込みライブラリ
**index(pattern, pos = 0) -> Integer | nil**
文字列のインデックス pos から右に向かって pattern を検索し、最初に見つかった部分文字列の左端のインデックスを返す。
見つからなければ nil を返す。

– 引数 **pattern** は探索する文字列または正規表現で指定
– 引数 **pos** が負の場合、文字列の末尾から数えた位置から探索する、0の場合省略可

例)

“`ruby
“astrochemistry”.index(“str”) # => 1
“regexpindex”.index(/e.*x/, 2) # => 3
“character”.index(?c) # => 0

“foobarfoobar”.index(“bar”, 6) # => 9
“foobarfoobar”.index(“bar”, -6) # =>

元記事を表示

[Ruby] Integerクラスのeven?メソッド

学習したことのアウトプット

# even?メソッド
Rubyの組み込みライブラリ
自身が偶数であれば真を返し、そうでない場合は偽を返す。

例)

“`ruby
10.even? # => true
5.even? # => false
“`

※補足等ある場合はコメントしていただけると幸いです。

元記事を表示

新規Railsアプリを作成するには

まずはターミナル上で、下記を実行する。

#新規アプリ名(例:tweet)を入力、 -dオプションでMySQLを使用することを明示
% rails new tweet -d mysql

元記事を表示

クラスとインスタンスの違いを簡潔にまとめる

# はじめに
どんどんアップデートしていく記事にしていこうと思っています。

# 結論
“`
クラス全体で共通した振る舞いを示す
クラスから生成されたインスタンスの振る舞いを示す
属性と属性値の関係
属性はみんなが共通で持っている項目で属性値は個別で異なる

元記事を表示

【Ruby】標準入力の値取得

# :large_orange_diamond: はじめに

こちらの記事は、Rubyをある程度学び、下記を考えている方向けの記事となります。

– 転職を見据えてPaizaのスキルチェックでランクを上げたいと考えている方
– 競技プログラミングに興味のある方

**標準入力** 【 standard input(stdin)】 とは

[IT用語辞典e-Words](https://e-words.jp/w/%E6%A8%99%E6%BA%96%E5%85%A5%E5%8A%9B.html)によりますと、
>標準入力とは、コンピュータ上で実行されているプログラムが、特に何も指定されていない場合に標準的に利用するデータ入力元。コンピュータの入力装置やOSが提供するデータ入力機能・経路などを指し、多くのシステムではキーボード装置による利用者の文字入力が標準入力に設定されている。

初心者の方には下記の[PaizaFAQ](https://paizasupport.zendesk.com/hc/ja/articl

元記事を表示

処理に名前をつけて使おう① introduceメソッド

※初心者向け
※アウトプット練習の為

開発環境
rails 6.1.4.1
ruby 2.6.5

##問題内容1##
introduceメソッドを作成してください。

**メソッドの処理**
私の名前はRubyです。とターミナルに出力する。

##解答1##

“`csharp
def introduce
puts “私の名前はRubyです。”
end
“`

##解説1##
メソッドを作成する場合には、以下のようにプログラムを書きます。

“`csharp
def メソッド名
# メソッドの処理
end
“`
今回はメソッド名をintroduceにするため、メソッドの定義は以下のようになります。

“`csharp
def introduce
# メソッドの処理
end
“`
メソッドの処理はdef メソッド名とendの中に記述します。今回はターミナルに文字を出力するのでputsメソッドを使います。

“`csharp
def introduce
puts “私の名前はRubyです。”
end
“`

なお、問題の条件はメソッドを作成するのみなので

元記事を表示

【Rails】ファイル投稿ボタンをカスタマイズ(備忘録)

ファイルを投稿するボタンをカスタマイズする方法を残しておきます。

元の記述

“`Ruby:new.html.erb
#省略

<%= f.label :画像 %>
<%= f.file_field :image %>

#省略
“`

変更後

“`Ruby:new.html.erb
#省略

#省略
“`

“`Ruby:SCSS
.label-box__inner{
padding: 10px 20px 10px 20px;
.input-default{
display: none;

元記事を表示

rails 6のアプリをgit clone後に遭遇したエラー

# rails6 git clone後の手順

### やりたいこと・背景
+ 実装途中のrails6のアプリをgit cloneしたい
+ 間違えて、ローカルのリポジトリを消してしまった際に~~そんなこと滅多にない~~githubにpushしていればなんとかなる
+ 昔作っていたrails6のアプリ実装を再開したい
+ などなど

## ざっくり手順

### 1. `Github`でgit cloneしたいリポジトリをコピー

“`terminal.
$ git clone クローンしたいリポジトリのurl
“`

### 2. `rm -rf Gemfile.lock`でgemのバージョン依存関係をなくす
> git cloneしてきたrailsのアプリは、gemのバージョンの依存関係が固定されてしまっているため。
そのまま、bundle installするとエラーが出る。

:::note info
cd アプリ名
で、railsアプリのディレクトリに移動した後
:::

“`terminal.
$ rm -rf Gemfile.lock
“`

私は、bu

元記事を表示

bcryptとbcrypt-rubyについて調べてみた

先日『暗号技術入門』を読みました。この過程で、アプリケーション開発で使用機会の多いbcryptについて気になり、調べてみました。
本記事では、bcryptを仕事で使う際に知っておいたほうが良さそうなことをまとめます。

## 環境

bcryptの挙動を説明するためにbcrypt-rubyを利用しています。
記事執筆時点で最新のv3.1.16を対象としています。

## bcryptとは

bcryptは**一方向ハッシュ関数**のアルゴリズムの1つであり、(パスワードなどの)データからハッシュ値を算出します。
bcryptの特徴として、ハッシュ値から元のデータを逆算されづらくするために、**ソルト**と**コスト**があります。
一方向ハッシュ関数とソルト、コストについては後述します。

ちなみに、「パスワードをハッシュ化する」という表現をよく見かけますが、これは「ハッシュ関数を用いてパスワードからハッシュ値を得る」と同義です。また、ハッシュ値は「ダイジェスト」と表現することもあります。[Rails Tutorial]([https://railstutorial.jp/](http

元記事を表示

【Rails】ポートフォリオ制作「バイク専用SNS」KoKo-iiYo

#【Rails】ポートフォリオ制作「バイク専用SNS」KoKo-iiYo

##はじめに

DMM WEB CAMP通学中、3ヶ月目に制作したポートフォリオについて、サイト概要・実装機能などまとめます。

元記事を表示

OTHERカテゴリの最新記事