Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

配列の中に入っているハッシュの値が大きい順に並び替える

## やりたいこと
配列の中に入っているハッシュの値が大きい順に並び替えたい。

“`ruby
[{:name=>”player1″, :count=>21},
{:name=>”player2″, :count=>0},
{:name=>”player3″, :count=>30}]
“`
このように並び替えたい。↓
“`ruby
[{:name=>”player3″, :count=>30},
{:name=>”player1″, :count=>21},
{:name=>”player2″, :count=>0}, ]
“`
## 考えたこと
「配列の要素を並び替えるのにsortメソッドというのがあったはず。sortメソッドを使えば並び替えられるかな」

## 試したこと
公式リファレンスをもとに`sort`メソッドを使ってみる。
今回は各要素がハッシュの形をしており、`:count`キーの値を比較する。
“`ruby
a = [{:name=>”player1″, :count=>4},
{:name=>”player2″, :count=>28},
{

元記事を表示

RailsでCloud Storageの設定をする

# 概要
Rails7でActive Storageを使用して、Google CloudのCloud Storageの設定の仕方の記事です。設定するときに、このような記事がありそうでなかったので書きます。

# 前提
Active Storageの設定が終わって、保存先が以下のlocalの設定では動くものとします。
“`development.rb or production.rb
config.active_storage.service = :local
“`
Active Storageの設定が終わっていな人は[こちら](https://qiita.com/nagumo01/items/76b97a98e83604150496)を参考に設定してください。

# Google Cloudの設定
### Cloud Storageの設定
1. Cloud Storageを開いてバケットの作成
1. ロケーションタイプ、リージョンを設定(単一リージョンが1番安い)
1. デフォルトのクラスやアクセス制御を設定
1. 公開アクセスを禁止で問題ない

### サービスアカウントの作

元記事を表示

[Ruby] 名鉄津島線の駅名を上り方面、下り方面の順番で表示する

名鉄津島線の駅名を上り方面、下り方面の順番で表示するプログラムをRubyで実装しました

“`Ruby
# 名鉄津島線の駅名表示

tsushima_line_data = [“須ヶ口”,”甚目寺”,”七宝”,”木田”,”青塚”,”勝幡”,”藤浪”,”津島”]
station_num = tsushima_line_data.length

def space()
puts “”
end

# 名鉄津島線の上り方面の駅名を順に表示(津島から須ヶ口)
start_num = 0
i = station_num – 1
while i >= start_num
puts tsushima_line_data[i]
i -= 1
end

space

# 名鉄津島線の下り方面の駅名を順に表示(須ヶ口から津島)
j = start_num
while j < station_num puts tsushima_line_data[j] j += 1 end ``` 結果 ![title.jpg](https://qiita-image-store.s3.ap-nort

元記事を表示

RSpecの導入方法(準備まで)

# 環境構築の手順
### ① Gemの追加
“`:Gemfile
group :development, :test do

# 以下追加
gem ‘rspec-rails’
gem ‘factory_bot_rails’
end
“`

### ② RSpec用の設定ファイルを生成する
“`
bundle exec rails g rspec:install
“`
下記のようにファイルが作成される
“`
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
“`

### ③ テストを実行してみる
“`
bundle exec rspec
“`
以下のような結果になれば、RSpecを利用する準備は完了。
テストファイルをまだ作成していないため、このように表示される。
“`
No examples found.

Finished in 0.00026 seconds (files took 0.05634 second

元記事を表示

【Ruby】Procオブジェクトとcall

# 初めに

Procを語るときはブロックの理解も必要ですが、今回は説明を省いてProcで何をしているのかcallとセットで書いていきます。

# Procとは

「Proc ruby」で検索すれば、確実にGoogleでヒットしそうな見出しですが自分が理解できればいいので進めます。

– Procはブロックを持ち運べるオブジェクト
– Procはクラス。Proc.newでオブジェクトを作れる
– Proc.newで作成したオブジェクトはcallで呼び出せる

① 敢えてcallで呼び出さなかったときに、どのような結果が返るのか

“`ruby
proc = Proc.new
p proc
# => #
“`

実行結果を見てみると、Proc: に続く謎の数字。Proc.newで作成したオブジェクトが返ってきてるようです。

② callで呼び出すと、変数に代入したProcオブジェクトが返る

“`ruby
proc = Proc.new { p “proc” }
p proc.call
# => pro

元記事を表示

デバイスやブラウザでハンドリングするにはUserAgentを使用する

# UserAgentとは
– エンドユーザが使用しているデバイスやブラウザを認識することができる機能

# 使用方法
以下のコードをcontrollerに記載することで`HTTP_USER_AGENT`を取得することができる

“`ruby
request.env[“HTTP_USER_AGENT”]
# => “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36”
“`
よって、下記のようにハンドリングすることができる。
### ブラウザによってハンドリング
“`ruby
def check_user_agent
ua = request.env[‘HTTP_USER_AGENT’]
if ua.include? “MSIE”
p “IEです”
elsif ua.include? “Firefox”
p “firefoxです”
e

元記事を表示

開発環境で外部APIからレスポンスを受け取るためにrgrokを導入する

# ngrokとは
– ローカルPC上で稼働しているネットワーク(TCP)サービスを外部公開できるサービス
– 開発環境から外部APIと接続して外部APIからレスポンスを受け取りたい場合に使用する

# 導入手順
### 1. ユーザ登録
下記ngrok公式サイトからユーザ登録する。
https://dashboard.ngrok.com/signup
### 2. ngrokコマンドをインストール
2-1. 下記rgrok公式サイトのダウンロードページからファイルを取得する。
https://ngrok.com/download

2-2. ファイルをダウンロード後、任意の場所で解凍する。

2-3. ツールのインストールが完了後、アカウント登録後に表示される「Welcome to ngrok!」のページに表示されている「Connect your account」に記載されているngrokのコマンドを実行する。
→ ~/.ngrok2/ngrok.ymlが生成されたことを確認(認証トークン情報が登録されている)
### 3. Webサイトを公開する
3-1. 下記コマンドを実行し、ロ

元記事を表示

【Rails】コンソールを使いこなそう!レベル1 〜基本的な操作編〜

# コンソールの基本
コンソールとは、プログラムの出力を実際に表示するものです。
極端にいえば、1+1と入力すれば2が返ってきます。
“`console
>irb(main):001:0> 1+1
=> 2
“`
これを利用して、モデルを作ったり中身を確認したりもできます。

コンソールで実行できたことはそのままコードで使えるので、実装前に確認することでエラーを未然に防ぎつつ、着実にコーディングが行えるようになります。

# コンソールの起動 ・ 終了
railコンソールは、ターミナル上で`rails c`と打つと起動し`exit`で終了します。

“`console:コンソール
$ rails c # 起動
>irb(main):001:0> exit # 終了(ショートカットはcontrol + d)
“`

`rails c`で作成・編集したデータは、データベースに保存されます。

しかし試作の度にデータが作られるのは困る場合があります。
そんな時は`rails c -s`を使うと、データは保存されずに全てロールバックします。

“`console:コンソール
$ r

元記事を表示

Railsで特定のカラムを途中から必須にするバリデーションの実装方法

## 事象

Railsアプリケーション開発において、特定のカラム(ここでは便宜上「属性X」と呼びます)が初めは任意入力だったものの、ビジネスルールの変更により必須入力とする必要が出てくる状況は珍しくありません。この記事では、そのような要件変更を効率的に実装する方法について説明します。

## 実装

新規レコードの作成時にのみ「属性X」の入力を必須とするバリデーションを追加します。これは、`on: :create` オプションを使用して、バリデーションを新規作成時に限定することで実現します。

“`ruby:model.rb
class ExampleModel < ApplicationRecord validates :attribute_x, presence: true, on: :create end ``` このコードにより、新規レコードの作成時にのみ「属性X」の入力が必須となります。既存のレコードに対する更新操作では、このバリデーションは適用されません。 ## まとめ この記事では、Railsで特定のカラムを途中から必須に変更する際のバリデーションの実装方法

元記事を表示

Rubyプロジェクトでの主要ライブラリの活用

Rubyは、その表現力豊かな文法と豊富なライブラリ(gem)により、Web開発者の間で高く評価されています。Rubyプロジェクトにおける効率的な開発には、これらのライブラリを理解し、適切に活用することが不可欠です。この記事では、Rubyプロジェクトで頻繁に使用される主要ライブラリとその用途についてまとめてみました。

### 基本的なライブラリ
## WEBrick
用途: フロントエンドとバックエンド間のデータ移送。
WEBrickはRuby標準の簡易HTTPサーバーライブラリで、小規模なWebアプリケーションや開発時のテスト用サーバーとして利用されます。フロントエンドとバックエンド間のデータ移送を手軽に行えるため、開発プロセスをスムーズにします。

## CSV
用途: データの保存と読み込み。
データの保存や読み込みにはCSVライブラリが便利です。CSV(Comma-Separated Values)形式のファイル操作を簡単に行うことができ、データのインポートやエクスポートが必要なアプリケーション開発に欠かせません。

## JSON
用途: JavaScriptの変数で受け取る

元記事を表示

Ruby の `and` と `&&` は違う

`&&` と `and` とか、`!` と `not` とか、一緒じゃんって思ってるとバグることがあるので注意

# 何が違うか

https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html

演算子同士の優先度が違う。要は演算子を並べたときのくっつく順序が違う。

>“`
>高い ::
> []
> +(単項) ! ~
> **
> -(単項)
> * / %
> + –
> << >>
> &
> | ^
> > >= < <= > <=> == === != =~ !~
> &&
> ||
> .. …
> ?:(条件演算子)
> =(+=, -= … )
> not
>低い and or
>“`
>左の「高い」「低い」は演算子の優先順位です。

# 代入(`=`)より優先度

元記事を表示

【Ruby】Fileクラスのメソッド

# Fileクラス

### Fileクラスのクラスメソッド

– File.chmod
引数に指定したファイルのモードを変更する

“`ruby
File.chomd(モード, “ファイル名”)

File.chmod(0644, “text.txt”)
“`

– File.delete
引数に指定したファイルを削除する
削除に成功した場合は削除したファイルの数を返し、削除に失敗した場合はエラーが発生します。

“`ruby
File.delete(“ファイル名”)

# 削除成功
File.delete(“test_1.txt”, “test_2.txt”) # => 2

# 削除失敗
File.delete(“test_1.txt”) # => Error
“`

元記事を表示

【Ruby】論理演算子「&&」と「||」を整理した

# 論理演算子

### ||演算子

– 左辺がtrueの場合、右辺は実行しない
– 左辺がfalseの場合は、右辺は実行する

①変数に代入した値をif文で比較して、一致しているか

“`ruby
color = ‘red’

if color == red || color == blue then
puts “色は赤です。”
end
“`

②配列同士の比較

if文と違って、比較対象が存在しないパターン。
①の color = ‘red’ のような対象がない。

Rubyで偽になる値がnilとfalseのみで、それ以外の値は全て真(true)になることを理解しておく必要がある。

また、a1 || a2のような式は左から評価される。

“`ruby
a1 = [1,2,3]
a2 = [4,2,3]
p a1 || a2 # [1,2,3]

# 左辺の値にnilを設定したので、右辺が実行
a3 = nil
a4 = [4,5,6]
p a3 || a4 # [4,5,6]
“`

nil, falseは設定されてないので左辺の値が返ってくる。

### &

元記事を表示

[Ruby]インスタンス変数と普通の変数の違い

## はじめに
Rubyのコードを見たとき、何これ(下のコードを参照)と思ったことがあったのでインスタンス変数の違いと普通変数の違いをまとめます。

“`.rb
@calculator = Calculator.new
“`

## 目次
– はじめに
– 違い
– インスタンス変数とは
– 普通の変数とは
– おわりに

## 違い
3つの要素による違いがあります。

– スコープ
– 寿命
– 表記方法

それぞれ以下で解説します。

## インスタンス変数とは

【スコープ】
– インスタンス変数は、クラスのインスタンス内で有効
– クラスのメソッド内やインスタンスメソッド内で宣言され、そのクラスのインスタンス内で共有される

【寿命】
– インスタンスが存在する限り生きてる!
– インスタンスが亡くなったら破棄される!

【表記法】
以下参照

“`.rb
@instance_variable = “This is an instance variable”
“`

## 普通の変数とは

【スコープ】
– 通常の変数は、メソッド内で宣言されます!
– メソッド内での

元記事を表示

【Rails】session[:user_id]とは

# session[:user_id]とは
`session[:user_id]`は、セッションにユーザーIDを格納するための方法です。セッションは、Webアプリケーションでユーザーの状態を維持するための仕組みであり、クライアントとサーバーの間で情報を保存するために使用されます。

具体的には、`session[:user_id]`は、ユーザーがログインしたときにセッションにユーザーIDを保存し、ログアウトするまでそのユーザーが認証されていることを示します。これにより、ユーザーのログイン状態を保持し、適切なユーザーに関連付けられたデータや機能にアクセスできるようになります。

# 使用方法
例えば、以下のようにしてユーザーIDをセッションに保存することができます:
“`rb
session[:user_id] = @user.id
“`
そして、以下のようにしてセッションからユーザーIDを取得することができます:
“`rb
user_id = session[:user_id]
“`
セッションは一般的に、クッキーなどのメカニズムを使用してクライアントのブラウザに保存されます。

元記事を表示

未経験エンジニアがハッカソンに出場した理由

# 概要
RUNTEQというプログラミングスクールで知り合った方とチームを結成してハッカソンに参加してきました!!

メンバー紹介

参加者 2名
・chihiro
私は今も大手カレーチェーンで生活費を稼ぎながらエンジニアになる夢を叶えるために学習を続ける未経験エンジニアです。

・若きエリートエンジニアくん 
スクールの同期中で一番最初にエンジニアになったスーパーエリートくんです。(ほんと尊敬)

以上、2人で出場しました。本当はもう一人出場する予定でしたが当日高熱を出してしまいました。とほほ…
人間体調が一番大切!まあ、こんなトラブルがありながら気合いで乗り越えました。

# qiitaハッカソンとは
今回私たちが出場したのはQiitaが主催している今年初めて開催された大会です。
ハッカソンという言葉はハック(hack)とマラソン(marathon)を合わせた混成語のことです。
題材は当日発表、1.5日でプログラミング言語を用いた作品を作成、プレゼンテーションを行い審査、決勝出場者が決まります。

# サービス概要
「Rails bridge」
Railsに

元記事を表示

【Rails】インスタンスメソッドの定義

# インスタンスメソッドの定義
Railsにおけるインスタンスメソッドの定義は、Active Recordモデルやコントローラーなどのクラス内で行われます。これらのクラスはRubyのクラスであり、インスタンスメソッドを定義することができます。

例えば、Active Recordモデル内でインスタンスメソッドを定義する方法を示します:
“`rb
class User < ApplicationRecord def full_name "#{first_name} #{last_name}" end end ``` この例では、`User`モデル内で`full_name`というインスタンスメソッドが定義されています。このメソッドは、`first_name`と`last_name`属性を組み合わせてユーザーのフルネームを返します。 コントローラー内でのインスタンスメソッドの定義も同様です: ```rb class UsersController < ApplicationController def show @user = User.find(params

元記事を表示

【Rails】flash.nowとは

# flash.nowとは
`flash.now`は、Railsのコントローラーでフラッシュメッセージを表示する際に使用されるオブジェクトです。通常の`flash`とは異なり、`flash.now`で設定されたメッセージは次のリクエストでは保持されません。

通常の`flash`メッセージは、リクエストの終了時にセッションに保存され、次のリクエストで表示されます。しかし、`flash.now`メッセージは、現在のリクエストにのみ適用されます。つまり、レンダリングするビューに対して直接メッセージを表示したい場合に使用されます。

# 使用方法
例えば、次のように使用します:
“`rb
# コントローラー内のアクション
def create
@user = User.new(user_params)
if @user.save
flash[:success] = “User created successfully!” # このメッセージは次のリクエストで表示される
redirect_to @user
else
flash.now[:error] =

元記事を表示

【Rails】form_tagとは

# form_tagとは
`form_tag`は、Railsでフォームを作成するためのヘルパーメソッドの1つです。このヘルパーメソッドを使用すると、HTMLの`

`タグを簡単に生成できます。

form_tagを使用すると、次のようなことができます:

1\. フォームのアクションやメソッドを指定する。
2\. フォームに含まれる入力フィールドやボタンなどの要素を含める。

以下は、form_tagの基本的な使用例です:
“`erb
<%= form_tag('/search', method: 'get') do %>
<%= text_field_tag(:query) %>
<%= submit_tag('Search') %>
<% end %>
“`
この例では、`form_tag`は`/search`に対するGETリクエストを行うフォームを生成します。フォームには1つのテキストフィールド(クエリ)と1つの送信ボタンが含まれています。

`form_tag`を使用すると、Railsで簡単にフォームを作成し、サーバーにデータを送信することができます。

元記事を表示

【Rails】Assets: precompileとは

# Assets: precompileとは
`assets:precompile`は、Railsアプリケーションのアセット(JavaScript、CSS、画像など)を事前にコンパイルするためのコマンドです。これにより、本番環境でのパフォーマンスを向上させるために、アセットを最適化してバンドルすることができます。

具体的には、`assets:precompile`コマンドは、アプリケーションのアセットをコンパイルし、`public/assets`ディレクトリにプリコンパイルされたファイルを生成します。これにより、アプリケーションが本番環境で実行される際に、アセットの読み込みが高速化されます。

`assets:precompile`コマンドは、アプリケーションを本番環境でデプロイする前に実行する必要があります。通常は、次のようにして実行されます:
“`
$ rails assets:precompile
“`
このコマンドを実行すると、アプリケーションのアセットが事前にコンパイルされ、本番環境での高速な読み込みが可能になります。

元記事を表示

OTHERカテゴリの最新記事