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

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

100日後くらいに個人開発するぞ!day055

## 今日はファイル分割とインスタンスの配列を学んでみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/a82970ad-091d-d0ab-1280-68ae1ef5fba4.png)

## 今日の学び
### ファイルを分割する
* 一部のコードを別のファイルに分割して処理することができる
* 最初に`require “./ファイル名”`とすることで、ファイル名.rbのコードを読み込める

### インスタンスの配列
+ インスタンスも配列の要素にすることができる
* 例
* `menu1 = Menu.new(name:”パン”,price:500)`
* `menu2 = Menu.new(name:”そば”,price:700)`
* :
* :
* `menus = [menu1,menu2,…]`→配列の要素にする
* `menus.each

元記事を表示

【VSCode】Solargraphの導入【Ruby】

## 拡張機能をインストールする
solargaphの拡張機能をVSCodeにインストールします。

https://marketplace.visualstudio.com/items?itemName=castwide.solargraph

## gemをインストールする
solargraphをグローバルインストールする場合には以下のとおりインストールします。

“`:ターミナル
$ gem install solargraph

# グローバルなgemのdocumentを生成。
$ yard gems
“`
`bundle exec`しないように`settings.json`に以下のように記述します。

“`settings.json
“solargraph.useBundler”: false
“`

bundlerでinstallする場合には以下のとおりインストールします。

“`:Gemfile
group :development do
gem “solargraph”
end
“`

“`bash
$ bundle install

# プロジェクト

元記事を表示

【Ruby on Rails】トップに戻るボタンの作成

# 目標

よくWebページで見るトップへ戻るボタン(画像右下)を作成します。

![Pagetop.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/caaf94d0-a965-823b-b2ff-bfb22e672df9.png)

# 開発環境
Rails 6.1.4
ruby 2.6.3

# 目次
– Viewページの作成
– CSSファイルの作成
– jQueryの定義(jsファイルの作成)

## Viewページの作成

まずトップへ戻るボタンとして使用したい画像を用意します。
今回は下記の画像使用。

![arrow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/773d73b8-46c9-4b3e-0167-94bd61858604.png)

下記のように記述します。

“`ruby:index.html

元記事を表示

Ruby On Rails7.0.3でscssファイル適用時の’cannot load such file — sassc’エラー

rails7.0.3でアプリケーション作成中に、’cannot load such file — sassc’のエラーメッセージが…

調べてみると以前のversionはデフォルトでinstallされていた`gem “sassc-rails”`が、rails7からデフォルトでコメントアウトされているとのこと。

Gemfileを確認してみると46行目あたりに
“`ruby:Gemfile
45 # Use Sass to process CSS
46 #gem “sassc-rails”
“`
との記載が、これを以下のように修正

“`ruby:Gemfile
45 # Use Sass to process CSS
46 gem “sassc-rails”
“`
`bundle install`します。
その後サーバーを再起動すると、無事解決しました!

元記事を表示

Ruby で配列に対して find したアイテムを消していく

# やりたいこと

配列に対して、特定のアイテムを1つずつ見つけてそのアイテムを配列から消していきたい。`Array#delete` だと対象に合致するものがすべて削除されてしまうので、 `find` 的に最初の一件のみを対象に削除したい。

“`ruby
# 候補者
candidates = [
{ name: ‘Taro’ },
{ name: ‘Jiro’ },
{ name: ‘Saburo’ },
{ name: ‘Shiro’ },
{ name: ‘Goro’ },
{ name: ‘Rokuro’ },
{ name: ‘Shichiro’ },
{ name: ‘Hachiro’ },
{ name: ‘Kuro’ },
{ name: ‘Juro’ },

]

# 当選者
first_elected = [
‘Shiro’,
‘Saburo’,
‘Jiro’,
‘Juro’,

]

# 追加当選者
second_elected = [
‘Taro’,
‘Kuro’,
..

元記事を表示

ActiveRecord で find_each しながら map したい

大きなデータを扱うときに使う `find_each` ([doc](https://api.rubyonrails.org/classes/ActiveRecord/Batches.html#method-i-find_each)) しながら値を集めたいとき

“`ruby
processed = []

User.where(‘age > 30’).find_each do |user|
# user に対するなんらかのバッチ処理

processed << user.id end processed ``` みたいにやっていたけど、 `find_each` は `Enumerator` かえすので普通にメソッドチェーンを使えば良い気がする。 ```ruby processed = User.where('age > 30′).find_each.map do |user|
# user に対するなんらかのバッチ処理

user.id
end
“`

元記事を表示

最新版のruby-buildを入れているとRubyをインストール出来ない問題の対処法(暫定版)

こんにちはRUNTEQで開発TA(エンジニア & 講師の補佐)をしているふぁらおです
今回は昨日(2022/07/12)から受講生がはまっているエラーがなかなか初学者にはしんどそうなので解決法を書いていきます
新しいruby-buildを入れると起こるようです(私のは`ruby-build: stable 20220710 (bottled)`)

### 環境(intel版でも発生を確認しています)
OS: macOS Monterey(12.4)
チップ: Apple M1

### エラー内容
rbenvでrubyをインストールしようとすると`Installing openssl-1.1.1q…`と出た後にエラーが出てインストールが出来ない

#### 実際のターミナル
“`
❯❯❯ RUBY_CFLAGS=-DUSE_FFI_CLOSURE_ALLOC rbenv install 2.5.1
Downloading openssl-1.1.1q.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/d7939ce614029c

元記事を表示

管理ユーザが一人もいなくなってしまわないように、更新・削除の制御をする

## 開発環境
macbook air(M1)
rails 6.0.3
ruby 3.0.1

## 状況

+ 一般ユーザーと管理ユーザーが存在するrailsアプリケーション
+ gem等使用せず開発する
+ 管理ユーザが一人もいなくなってしまわないように、更新・削除の制御をしたい
+ users tableのカラムはname, email, password_digest, adminの構成
+ adminはboolean型で管理

## コード例
データベースに登録されている最後の管理者が自身の管理権限を更新、削除出来ないよう、modelにコールバックを設定する。
“`Ruby:model/users.rb
before_update :admin_cannot_update
before_destroy :admin_cannot_delete

private

def admin_cannot_update
throw :abort if User.where(admin: true).count == 1 && self.admin_change == [true

元記事を表示

Rubyインストールでimplicitly declaring library function ‘memcmp’ with type

## 事象
– `rbenv`を使って、ruby
“`sh
$rbenv install 3.1.2
Downloading openssl-1.1.1q.tar.gz…
-> https://dqw8nmjcqpjn7.cloudfront.net/d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca
Installing openssl-1.1.1q…

BUILD FAILED (macOS 12.4 using ruby-build 20220710)

Inspect or clean up the working tree at /var/folders/tr/lpqk0__92s3bds2hlb500cf40000gn/T/ruby-build.20220712172414.90364.qfB2fT
Results logged to /var/folders/tr/lpqk0__92s3bds2hlb500cf40000gn/T/ruby-build.20220712172414.90

元記事を表示

【Railsエンジニア向き】Phoenixでコンソールからモデル操作をやってみよう【ハンズオン】

## Elixirのコンソールで随分苦しんだので

Phoenixを触ってはみたものの、モデル操作辺りでコンソール操作がうまくいかず、すっかり打ちひしがれているそこのアナタ!

PhoenixもRailsのようにサクサク触ってみたいではなくないですか?

ただ・・・Phoenixのやつ、Railsコンソールみたいにサクサク実験できる段階になるまで少し前提条件が存在するようです。

実際、コンソールで挙動を試そうとしてググっても、何通りも書き方が出てきたり、そのとおりにやってみても言うこと聞かない事が多くて、コンソールの操作に本当にイライラします。

ここでは、そんな状況から脱するための前提条件をステップを踏んで紹介していきたいと思います。

## ここでやること

– アプリ立ち上げ
– モデル作成
– 新規データーの作成
– DBへの登録(insert)

## 前提条件

MacOS 12.3.1 (Apple M1)
Elixir 1.13.4 (compiled with Erlang/OTP 25)
Phoenix installer v1.6.10
psql (Postg

元記事を表示

Rubyの開発環境を作る

初めましての方は初めまして。百瀬碧音と書いて、ももせあおいと言います。
今回の記事はRubyの開発環境を整えるための方法の備忘録です。

# Xcodeのインストール

まず、Macで開発を行えるようにするために必要なXcodeをインストールする。

“`zsh
$ clang
# $ xcode-select –install と一緒
# Macを開発で使えるようにするためにXcodeが必要
“`

# Homebrew のインストール

Homebrewという、Macのパッケージマネージャーをインストールする。

“`zsh
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`

最新のコマンドは [Homebrew公式ページ](https://brew.sh/index_ja) を確認する。このページのインストールの真下にあるコマンドをコピーして実行すると、Homebrewをインストールできる。

# 必要なパッケージをイン

元記事を表示

100日後くらいに個人開発するぞ!day054

## 今日はinitializeメソッドを学んでみた!

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2632394/ad863e16-4090-5b40-0586-beb59f443f31.png)

## 今日の学び
### インスタンス生成時に値を代入する方法
* initializeメソッド
* インスタンスを生成した直後に処理を実行することができる
* 「クラス名.new」でインスタンスを生成した直後に自動で呼び出される
* 使用例
* `class Menu`
* ` attr_accessor :name`
* ` attr_accessor :price`
* ` def initialize`
* ` self.name = “寿司”`
* ` self.price = 1000`
* ` puts “#{self.name

元記事を表示

RailsでActive Hashを使ってカテゴリを作る

RailsでActive Hashを使ってカテゴリを作る方法を紹介します。

こちらの記事
https://qiita.com/satoka_com/items/183d22541c3a54e0d878
を参考にしました。

最初にGemfileに、
“`
gem ‘active_hash’
“`
を記載して、
“`
$ bundle install
“`
します。

自分の場合だとrecruitmentモデル(求人ページ)にカテゴリを持たせたいと考えているので、
そこにActive Hashを使ってカテゴリを作っていきます。

最初にJobategoryモデルを作成します。
“`Ruby
#job_category.rb
class Category < ActiveHash::Base self.data = [ { id: 1, name: 'サンプル' }, { id: 2, name: 'サンプル2' }, { id: 3, name: 'サンプル3' } ] include ActiveHash::Associations has_many :r

元記事を表示

【Rails】リロードをしないとJavaScript (jQuery)が動作しない

今回はスクールでも頻発している
”リロードしないとjQueryが動かない問題”について記事にしていこうと思います。
かくいう私も見事この沼にハマり、かなり悩まされました、、、

# 開発環境
Rails 6.1.4
ruby 2.6.3

# 目次
– 原因
– 対処法
– 対処法(番外編)

## 原因
私の場合、FontAwesome導入時にjQueryのコードを追記していたのですが、
なぜかそれが削除されており、jQueryが作動しないという状況でした。

## 対処法

下記のコードを追記します。

“`ruby:config/webpack/environment.js
const webpack = require(‘webpack’)
environment.plugins.prepend(
‘Provide’,
new webpack.ProvidePlugin({
$: ‘jquery/src/jquery’,
jQuery: ‘jquery/src/jquery’,
Popper: ‘popper.js’
})
)
“`

元記事を表示

もう迷わないRubyのコード自動整形のやり方!!

今日は意外と時間かかったコードを自動で整形してくれる拡張機能を入れてみたのでそちらを記事に書いていこうと思います。
調べても思ったより上手くいかなくて、手こずったためこれから導入する人の少しでも参考になれば幸いです

まずはrufoというgemをインストールします
“`
$ gem install rufo
“`
VScodeの拡張機能でrufoと検索してダウンロードします
終わり

“`
これで一括でrufoでコードを整形できる
$ rufo .
“`

“`
特定のファイルだけ走らせる時
$ rufo ファイル名(ディレクトリ名)
例: $rufo app/views/layouts/application.html.erb
“`
ちなみにrufoでのコード整形の詳細設定の一例を書いておきます
プロジェクトフォルダ直下に.rufoファイルを作成
“`.rufo
parens_in_def :yes //これでメソッドに引数を渡すときに()が自動で生成される
trailing_commas :always //これで配列の要素の後ろに必ず,がつくようになる
“`

`

元記事を表示

ローカルでRailsの環境構築

Railsチュートリアルの通りにCloud9で環境構築をしていましたが、何度やり直しても正体不明のエラーが発生し初学者の自分では解決できそうになかったので、[こちらのProgateの記事](https://prog-8.com/docs/rails-env)を見てMacのターミナルで環境構築し最初からローカルでやるようにしました。ところが、ここでもエラーが発生し、調べたところ下記の記事が検索結果のトップに出てきたのでこの通りにすると一応解決できました。

無限 Rails is not currently installed on this system. 問題の調査 – Qiita
https://qiita.com/amuyikam/items/313bc89c1de320a4257e

この記事の通りに
hash -r
を実行しました。

“`
ys@mbp ~ % /usr/bin/rails –version
Rails is not currently installed on this system. To get the latest version, simply

元記事を表示

[Ruby]配列演算子[]等をあえて通常ののインスタンスメソッドのように使う

Rubyで個人的に面白い気づきがあったので記事にします。

## []を通常のインスタンスメソッドとして使っている例を発見
先日、担当しているプロジェクトで以下のようなコードを見ました。

“`ruby:ruby
array.[](0)
“`

恥ずかしながら、一瞬、これは何をしているんだ?と戸惑ってしまいました。
[]は配列演算子として配列や文字列にドットなしでつけるのしか見たことがなかったからです。

[Array#[]](https://docs.ruby-lang.org/ja/latest/method/Array/i/=5b=5d.html)はインスタンスメソッドとして用意されているので、以下は同じ結果になります。

“`ruby:ruby
array = [1, 2, 3]

array[1] #=> 2
array.[](1) #=> 2 ([]メソッドの引数を()で指定している)
array[] 1 #=> 2 (()を省略)
“`

## どんなときに使うのか

これをどんな時に使うのか、という話ですが、例えば以下のようなかたちで`&.`を使って、[]が使

元記事を表示

【Rails】Rails 6 × Tailwind CSS v2導入 – 備忘録

# 目次
[1.はじめに](#1-はじめに)
[2.TailwindCSSの導入](#2-TailwindCSSの導入)
[3.動作確認](#3-動作確認)
[4.おわりに](#4-おわりに)
[5.参考記事](#5-参考記事)

# 1. はじめに

Railsに慣れることが目的なので、CSSでもBootstrapでもよかったのですが、
CSSだと時間がかかるし・・・
Bootstrapは現場でほぼ使うことない・・・
と思いTailwindCSSを使ってみることにしました。

Rails の練習用にプロジェクトを作成している際に、TailwindCSSの反映で少し詰まったので対処を記載します。

Railsのアプリケーションの作成が完了した「後」の手順になります。

基本的に以下の記事を参照させていただき、作業を進めました。
[Rails6にTailwindCSSを導入し、tailwind.config.jsでカスタマイズもできるようにする](https://zenn.dev/ikuma/articles/install-tailwind-in-rails6-with-webpack

元記事を表示

carrierwaveとcocoonを使った複数枚画像投稿

# 執筆中

## 概要
carrierwaveとcocoonを使った複数枚画像投稿機能。
結論から言うと、本体とは別に画像テーブルを作成し、formをcocoonで複製しないと、ハッシュ化した複数投稿はできない。(と、思う。)
いろいろな記事があるが、画像の名前をハッシュ化していなかったりとピンとくる記事がなかったのでそれらを補ったものを投稿する。

## 開発環境
・Ruby: 3.1.2
・Rails: 7.0.2
・OS: macOS Monterey

## 準備
### テーブル構成
本が1に対して、画像が多のテーブル構造。
[carrierwaveの公式サイト](https://github.com/carrierwaveuploader/carrierwave)では複数画像の時は、json形式のカラムを作り(本記事だとbook)、そこに配列形式で格納する方法が紹介されているが、この方法で実装するとファイル名のハッシュ化で詰む。(後の、画像テーブルは別で用意するにて詳述する)

“`
# images
lass CreateNoticeImages < ActiveRe

元記事を表示

【draw.io】ER図テーブルに列と行を追加する方法


図描画ツール[draw.io](https://www.draw.io/)でER図を作成中、
テーブルの列や行の追加の方法がわからなかったのでメモしておきます。

↓ここにありました。

![スクリーンショット 2022-07-11 143732.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730324/6c375dc6-32fd-40fa-b237-9dbe7f0c9075.png)

対象のテーブルを選択して、右のArrangeタブのTableエリアを操作すればできました!

元記事を表示

OTHERカテゴリの最新記事