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

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

【Rails,Ruby】ページタイトルを三項演算子でシンプルに

#三項演算子

下記のように「?」と「:」を使って、if, else, end のくだりを一行で書ける書き方。

* if文による書き方

“`ruby
if name==”Taro”
“Yes, I am Taro”
else
“No, I am not #{name}”
end
“`

* 三項演算子による書き方

“`ruby
name==”Taro” ? “Yes, I am Taro” : “No, I am not #{name}”
“`
#ページタイトルヘルパーへの応用

この書き方を利用して、ページタイトルヘルパーもシンプルに書ける。
(page_titleはprovideでページごとに与えてください)

* 変更前

“`ruby:application_helper.rb
module ApplicationHelper
BASE_TITLE = “HOGE”
BASE_TITLE.freeze
def full_title(page_title)
if page_title.empty?
BASE_TITLE

元記事を表示

Railsで日本語ヘッダのCSVを読み込む

# Railsで日本語ヘッダを持つCSVファイルを読み込む
想定: ユーザにCSVをアップロードしてもらい処理を行う。その際のヘッダー名に日本語を使いたい場合の書き方
結論: i18_nを使ってマッピングします。

## サンプルCSV
“`
名前,かな
テスト,てすと
太郎,たろう
“`

## いまいちな書き方
“`
CSV.foreach(“user.csv”, headers: true) { |row| puts row[‘名前’] }
テスト
太郎
“`
いまいちな理由

– headerを日本語以外に変更する場合にコード修正が必要になる
– インスタンスを作成する場合のコードが冗長になる

“`
User.new({name: row[‘名前’], kana: row[‘かな’]})
“`
2カラムぐらいなら問題ないですが、増えてくると可読性が下がります。

## おすすめの書き方
`config/locales/models/user.ja.yml` を作成してマッピングを行います。

### マッピング用ymlファイル
“`
ja:
activer

元記事を表示

migrationファイルのnull:falseとは

## はじめに
Qiitaへの初投稿になります。文章を作るのが苦手なので、その練習と備忘録もかねての投稿です。
学習していて気になったので調べてみました。
# 意味
migrationファイルのnull:falseとは指定したカラムがデータベースに空の状態で保存されることを防ぐものです。

“`ruby
class CreatePosts < ActiveRecord::Migration[6.0] def change create_table :posts do |t| t.string :name, null: false t.text :text, null: false t.timestamps end end end ``` 上記の場合nameカラム、textカラムを空で保存できない設定になります。 # presence: true 似ているものでmodelにバリデーションとして記述するpresence: trueがあります。 意味は指定したカラムが空の状態で保存されることを防ぐ。 ```ru

元記事を表示

Railsで作った日本、台湾華語対応のブログ構成

# なぜまとめるのか
Railsオンリーでつくったブログ([日台one!](https://nittai-one.com)というブログ名)のフロントをこれからNext.jsに置き換えようと考えています。
そのため、現状の仕様が置き換わってしまう前に現状の姿形を記録に残したいと思いました。

[github リポジトリ](https://github.com/atamakonkurii/blog_JT)

ちなみに、僕は日本人、彼女が台湾人でブログの記事作成は二人でやってます。
お互いの母国語で記事を書いて、記事を投稿した瞬間にAmazon translateで翻訳し、DBに保存する仕様です。

# 技術スタック

| カテゴリ | 要素 |
| —- | —- |
| 言語/フレームワーク | Ruby / Rails / tailwind css |
| ミドルウェア | MySQL |
| クラウドサービス | AWS EC2 / CloudFront / AmazonTranslate|

未経験入社した段階ではRails歴1週間にも関わらず、Rail

元記事を表示

【Ruby】クラスメソッドってなんや

# クラスメソッドとは
インスタンスメソッドが生成されたインスタンスに対して呼び出すメソッドであるのに対し、
クラスメソッドはクラス全体に対して呼び出すメソッドです。
クラスメソッドの定義はメソッド名の前に「self.」を付けます。
また「class << self」から「end」の間にメソッドを書くことでも定義できます。 # インスタンスメソッドとの比較 実際にインスタンスメソッドとクラスメソッドを使って、同じ結果が出力されるようにコードを書いていきます。 まずはインスタンスメソッド ```ruby class Greet def hello 'Hello!' end end greet = Greet.new #newメソッドでインスタンスを生成 greet.hello #生成されたインスタンスに対して呼び出す #=> ‘Hello!’

Greet.hello #クラスに対しては呼び出せない
#=> undefined method `hello’ for Greet:Class (NoMethodError)
“`

次にクラスメソッド

“`r

元記事を表示

Rubyの条件分岐処理(随時更新)

# はじめに
– 私個人の備忘録と学習記録として残しています
– 誰かの調べ物の役に立てれば幸いです

## if
– 条件式が真(nil, false以外)の時、処理を行う条件分岐
– 条件を追加する際はelsif
– 条件以外の処理はelse
– thenを使うと処理を1行にまとめて書くことができる
– elsifとelseは無くてもいい
– 後置if文もあるよ
– 最後に評価した式を返り値として返す

“`ruby
# オーソドックスなバージョン
if 条件式1
    処理1
elsif 条件式2
    処理2
else
    条件式に当てはまらない時の処理
end

# thenを使用して条件式の行に処理も入れ込んだバージョン
if 条件式1 then 処理1
elsif 条件式2 then 処理2
else 条件式に当てはまらない時の処理
end

# 後置if文を使用するバージョン
def fizz_buzz(number)
return ‘FizzBuzz’ if number % 15 == 0
return ‘Buzz’ if numbe

元記事を表示

sketchupでruby その20

#概要

sketchupでrubyやってみた。
練習問題やってみた。

#練習問題

お宅のぶどう園、見せて。

#写真

![budo.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/18104/1ad5f97b-3d6b-4277-3d9d-b8e787cdb6d3.jpeg)

#環境

windows vista
sketchup 8

#サンプルコード

“`
def loadtest2
model = Sketchup.active_model
entities = model.active_entities
path = Sketchup.find_support_file “ki2.skp”, “Plugins/”
definitions = model.definitions
componentdefinition = definitions.load path
for x in 0..5 do
for y in 0..1 do

元記事を表示

Rubyの文字列のまとめ(随時更新)

# はじめに
– 備忘録として使用
– 誰かの備忘録にもなれば幸いです

## シングルクォート(エスケープが必要)
“`ruby
# 式展開や特殊文字も文字列として認識される
#!/usr/bin/ruby
puts ‘hello\nworld’
#=> hello\nworld
“`

## ダブルクォート(エスケープが必要)
“`ruby
# 式展開や特殊文字がちゃんと認識される
#!/usr/bin/ruby
puts “hello\nworld”
#=>
hello
world
“`

## %記法を使用する(利点: エスケープが不要)
“`ruby
# %q!文字列! => シングルクォートで囲んだことと同じ
puts %q!Don’t speak!

# %Q!文字列! => ダブルクォートで囲んだことと同じ
puts %Q!Don’t speak “Japanese”!

# %!文字列! => ダブルクォートで囲んだことと同じ
puts %!Don’t speak “Japanese”!
“`

## 文字列同士の大小
“`ruby
随時編集
“`

元記事を表示

【Ruby】末尾の文字列を3回出力するプログラム extra_endメソッド

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

開発環境
rails 6.0.4.4
ruby 2.6.5

**概要**
対象の文字列の末尾に位置する文字を取得し、それらを任意の回数繰り返して出力するプログラムを実装します。

##問題内容
以下の要件を満たすextra_endメソッドを実装しましょう。

・対象の文字列から末尾にある2文字を取得すること
・取得した2文字を3回繰り返して出力すること

**雛形**

“`ruby
def extra_end(str)
# 処理を記述
end

# 呼び出し例
extra_end(‘Hello’)
“`

**出力例:**
extra_end(‘Hello’) → ‘lololo’

**ヒント**
sliceメソッドを使いましょう。

**sliceメソッド**
sliceメソッドとは、配列や文字列から指定した要素を取り出すことができるメソッドです。

“`ruby
# 配列を作成します
array = [0,1,2,3,4,5,6]

# 配列から引数で指定した要素を取得します
ele1 = array.slice(1)
pu

元記事を表示

Ruby on Rails チュートリアル第4章をやってみて

#Rails風味のRuby
■第4章
第3章のRailsアプリケーションを基にRubyを扱っていく。

##4.1 動機
Rubyの基礎知識が全くない中でも、Railsアプリケーションの骨組みを作り上げ、さらにテストまで行うことができた。この章ではもっといろんなことをやっていく。

まずはトピックブランチを作成して作業を進める

“`
$git checkout -b rails-flavored-ruby
“`

###4.1.1 組み込みヘルパー
app/views/layouts/application.html.erb
の中身について解説。

###4.1.2 カスタムヘルパー
4.1.1と同じファイルの解説。

しビューの1つからprovide呼び出しを削除すると、そのページ固有のタイトルの代わりに次のタイトルが表示される

“`
| Ruby on Rails Tutorial Sample App
“`

余分な縦棒が入ってしまう。ページタイトルが正しく表示されない問題を解決するために、full_titleというヘルパーを作成する。

これでapp/views/

元記事を表示

Rubyのメソッドに関して(今後も追記していく)

# Rubyのメソッドの定義
“`ruby
# スネークケースでメソッド名を書く
def メソッド名
処理
end
“`

# メソッドの呼び出し方
“`ruby
# 引数なし
オブジェクト.メソッド

# 引数有りかっこ有り
オブジェクト.メソッド(引数1, 引数2, 引数3)

# 引数有りかっこなし
オブジェクト.メソッド 引数1, 引数2, 引数3
“`

# メソッドの戻り値
– 最後に評価された式が戻り値になる
– 条件分岐で早期にメソッド外へ出たい時に明示的にreturnを使う

# クラスメソッド
> 今後編集

# インスタンスメソッド
> 今後編集

元記事を表示

RailsEngineを利用した、社内Gem(ライブラリ)開発方法

# RailsEngineを利用して、社内Gem開発方法

現在の業務委託先で受託開発をしています。

受託開発で請け負うアプリは似通ったアプリを開発するケースが多いです。

以前は受託開発案件はフルスクラッチで開発していたのですが、似通った共通の機能はRailsEngine※1で機能開発、共通化して社内Gem(ライブラリ)にすることで開発スピードを上げることになりました。

考え方としてはDHHのDRYと同じです。

コア機能部分を共通化してコンテンツの投入だけで簡単にアプリを開発できるようにしたイメージです。

※1, RailsEngineとはホストとなるRailsアプリケーションに機能を提供するミニチュア版のRailsアプリケーションです。RailsEngineで作成されたミニチュアアプリケーションをホストアプリケーションにインストールするだけでホストアプリケーションにコア機能を拡張させることが可能になります。

## RailsEngine(社内gem)の作り方

Rails Engineを作成するには、`rails plugin new < engine_name > —

元記事を表示

rubyでfizz_buzzプログラムを書こう!!

# shebangで実行するfizz_buzzプログラム
“`fizz_buzz.rb
#! /usr/bin/env ruby
def fizz_buzz(number)
return ‘FizzBuzz’ if number % 15 == 0
return ‘Buzz’ if number % 5 == 0
return ‘Fizz’ if number % 3 == 0
number.to_s
end

# startとendの数値を指定して繰り返し処理(for文の見た目が嫌いだからこちらを採用)
1.upto(100) {|number| puts fizz_buzz(number)}
“`

# 実行
“`zsh
# 権限付与を忘れずに!(デフォルトは644)
$ chmod 744 fizz_buzz.rb
$ ./fizz_buzz.rb
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizz_buzz
.
.
(中略)
.
.
fizz_buzz
91
92
fizz
94
buzz
fizz

元記事を表示

Rubyを実行する環境まとめ

# Rubyを実行する方法

### ・irb(REPL)を使う
“`zsh
$ irb
irb(main):001:0>
“`
> REPL(Read-eval-print loop、 対話型評価環境)
> 日本語を使うにはreadlineというライブラリが必要(2.6系以前だとうまくいかないこともあるらしい)

###### 2.7系以降で使える便利機能
“`zsh
$ irb
# tabキーを一度押すと入力候補が出る
$ irb(main):001:0> 1.to_
1.to_c
1.to_enum
1.to_f
1.to_i
1.to_int
1.to_r
1.to_s

# tabキーを2度押すとAPIドキュメントを表示する(qキーで終了)
$ irb(main):001:0> 1.to_s
= Integer.to_s

(from ruby core)
————————————————————————
int.to_s(base=10) -> s

元記事を表示

【Rails】erbファイルのコメントアウト方法

# はじめに
プログラミング初学者の[@kat_log](https://twitter.com/kat__log “Twitter”)と申します。

railsの`.html.erb`形式のファイルのコメントアウト方法の共有です。

# 方法
**<%の直後に`#`を付ける。** ↓こんな感じです。 `<% コード %>`なら`<%# コード %>`
`<%= コード %>`なら`<%#= コード %>`

# おわりに
お読みいただきありがとうございました。
学習中の方、一緒に頑張っていきましょう〜?

# 参考
http://rails.takayukikoyama.com/erb/erb-comment/

元記事を表示

Railsのassert_templateとassert_selectの使い方

#はじめに
Railsチュートリアルを進めている中でassert_templateとassert_selectの二つのメソッドについて一旦自分なりにまとめておきたいので記事にします。

#assert_templateメソッドについて

レスポンスが正しいテンプレートとレイアウトを描画していることを検証する。

/users/new.html.erbが描画されているかどうかを検証する

“`rb
assert_template ‘users/new’
“`
assert_templateについてまだあるようなのですが現時点では理解しずらいと感じたため今後追記します。

#assert_selectメソッドについて
アクション実行の結果として描写されるHTMLの内容を検証する。
また、HTML要素内にキーが存在することを主張することで、 リクエストに対するレスポンスとなるビューの内容をテストする事が出来る。

#####assert_selectには2つの書式がある。

1. assert_select(セレクタ, [条件], [メッセージ])という書式は、セレクタで指

元記事を表示

selectメソッドとそれに関するメソッドの解説

「collectメソッドと同じメソッドを選べ」という問題は頻出なので、この際にまとめようとおもいます

## selectメソッド
selectメソッドは、調べたブロックが真であった場合、その要素を返すメソッドです。
真であるものがなかったら、空の配列が返ってきます
“`
(1..10).select {|i| i % 2 == 0 }
=> [2, 4, 6, 8, 10]

[3, 5, 7, 9].select {|i| i % 2 == 0 }
=> []
“`
### 似てるけど、違うメソッド
#### rejectメソッド
rejectメソッドは、調べたブロックの中で、偽であった要素を返すメソッドです。
偽であるものがなかったら、空の配列が返ってきます
“`
(1..10).reject { |i| i % 2 == 0 }
=> [1, 3, 5, 7, 9]

[2, 4, 6].reject { |i| i % 2 == 0 }
=> []
“`

#### grepメソッド
条件に一致した要素を配列で返します。条件に一致した要素がなかった場合、空の配列が返っ

元記事を表示

MacOSでHomebrewを使ってruby3.0.3の環境構築をしてみた

# Hello, World!
– 初投稿になります。
– 優しい目で見てもらえると嬉しいです

# 今日の学習内容
#### [パッケージ管理ツール(Homebrew)のインストール](https://brew.sh/index_ja)
#### rbenvを使用するためのプラグイン(ruby-build)をインストール
“`zsh
# homebrewをインストールしたばかりの人
$ brew install ruby-build

# homebrewを既にインストールしている人
$ brew update

# ruby-buildを既にhomebrewでインストールしている人
$ brew update
$ brew upgrade ruby-build
“`

#### rubyのバージョン管理ツール(rbenv)を使用してruby3.0.3をインストール
“`zsh
# インストールできるrubyのバージョンを確認(上に書いた更新をしていないと最新のバージョンが出てこない)

$ rbenv install –list
2.6.9
2.7.5
3.0.3
3.1.

元記事を表示

Rails:ローカルでのタスクとHerokuの環境設定やDB操作など

## ローカル環境
コンソールの準備

“`:terminal
$ rails c
“`
タスクの読み込み
これで `schedular.rake` のタスクを利用できる

“`:terminal
$ Rails.application.load_tasks
“`
タスクの実行
“`:terminal
$ Rake::Task[‘タスク名’].execute
“`

## Heroku環境
ログ出力

“`:terminal
$ heroku logs -t
“`

環境変数の設定

“`:terminal
$ heroku config:set キー=”値”
“`

環境変数の確認

“`:terminal
$ heroku config
“`

データベースの情報取得

“`:terminal
$ heroku pg:credentials:url –app アプリ名
“`

データベースの操作

“`:terminal
$ heroku pg:psql -c SDL文
例) heroku pg:psql -c “select * from user

元記事を表示

相互フォローしている人限定でDMを送れるようにする。

地球の皆さんこんにちは。
今回は、この私が理解に苦しんだ、相互フォローしている人限定で、DMのやりとりをできる方法を解説します。
私は、これまでプログラミングというものをやってこなかった…..そう、やってこなかったのです。
この苦しみ….あなたにわかりますか?わからないというなら……!くらえ!!!!

それでは、さっそく始めていきましょう。

>Rails 6.1.4
Ruby 2.6.3
Bootstrap, devise導入済み
Bookの投稿サイトを作っています

前提条件

Userモデル、コントローラ
relationshipsモデル、コントローラー(フォロー機能実装のためのもの)
以上が作成済みであること。

ちなみに私の好きな食べ物はオムライスです。

モデルを作ろう

さあ!ここで問題です。今から何を作るでしょうか!?
チッチッチッ……..
ヒントは好きな食べ物です!!!
さあ!答えをどうぞ!!!

そう!!モデルを作ります!!

“`ruby
rails g model Chat user_i

元記事を表示

OTHERカテゴリの最新記事