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

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

【Ruby on Rails】yarn install –check-files

## 導入
Rails環境で、node_moduleをインストールしたら発生したエラー。

“`shell
========================================
Your Yarn packages are out of date!
Please run `yarn install –check-files` to update.
========================================

To disable this check, please change `check_yarn_integrity`
to `false` in your webpacker config file (config/webpacker.yml).

yarn check v1.22.5
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
“`

## 解決方法
このエラーは、package.jsonにあるパ

元記事を表示

gemのransackで複数カラムを検索対象にする方法

##始めに
僕自身複数カラムを検索対象にするのは難しいと思っていたのですが、思っていたより簡単にできたので是非参考にしてもらえたらなと思い、書くことにしました。

##前提
僕はPostモデルのtitleとdescriptionを検索対象にやっていきます。

“`ruby
class CreatePosts < ActiveRecord::Migration[5.2] def change create_table :posts do |t| t.string :title  ⬅️⬅️⬅️⬅️⬅️⬅️これ t.integer :recommended     t.text :description ⬅️⬅️⬅️⬅️これ t.references :user, foreign_key: true t.timestamps end add_index :posts, [:user_id, :created_at] end end ``` ##やり方 始めにviewの一部を変えていきます。 ti

元記事を表示

クラスとインスタンス

#クラスとは?
設計図や料理のレシピのような物です。新しい物を作るのにその度に一から作るのは手間と時間がかかります。
それを避けるために、共通のルールを守った上で個別のデータを作ることが出来るようにする物です。
クラスは共通の処理と属性を決めるだけで、単体でデータを扱うことはできません。

“`
class クラス名
# 変数やメソッドの定義
end
“`

今回はジャムを作るJamクラスを定義して見ましょう。

“`
class Jam

end
“`

##インスタンスとは
実際に作られる『もの』のことです。
クラスを定義しましたがクラスだけでは何のデータも持ちません。
データを持つインスタンスをクラスから生成します。
クラスは定義しなくてもnewというメソッドを始めから持っていてこれを実行することで
データを持つインスタンスが生成されます。

インスタンスを生成したあとからデータを追加したり、メソッドを実行できるようにするために
変数に代入して作ります。

“`
変数名 = クラス名.new
“`

実際にインスタンスを生成してみると

“`
class Jam

元記事を表示

fizz_buzz問題で使用された表現

# 前回投稿したfizz_buzz問題
記述を見ていると基礎的な表現が多い様に感じたので、
実際に使われたいた表現に関して整理してみる。
[fizz_buzz問題解説](https://qiita.com/iamu_TECH_CAMP/items/8253c8b123c20b8343c6)

“`ruby:fizz_buzz問題
def fizz_buzz
num = 1
while (num <= 100) do if num % 15 == 0 puts "FizzBuzz" elsif (num % 3) == 0 puts "Fizz" elsif (num % 5) == 0 puts "Buzz" else puts num end num = num + 1 end end fizz_buzz ``` ## 代入演算子 ```ruby:代入演算子 num = 1 # 変数名 = 格納する値 ``` - 上記の記述による作用 - `代入`と呼ばれる記述を用

元記事を表示

【Rubyトリビア】elsif の条件式は省略可能!?

Rubyのif文ではelsifを使って複数の条件を書くことができます。

“`ruby
def greet_to(name)
if name == ‘Alice’
puts ‘Hi, Alice!’
elsif name == ‘Bob’
puts ‘Hi, Bob!’
end
end

greet_to(‘Alice’)
#=> Hi, Alice!

greet_to(‘Bob’)
#=> Hi, Bob!
“`

それでは次のようにelsifの条件式を無くすとどうなるでしょうか?

“`diff
def greet_to(name)
if name == ‘Alice’
puts ‘Hi, Alice!’
– elsif name == ‘Bob’
+ elsif
puts ‘Hi, Bob!’
end
end
“`

答えはこうです。(あれ、さっきと同じ!?)

“`ruby
greet_to(‘Alice’)
#=> Hi, Alice!

greet_to(‘Bob’)
#=> Hi, Bob!

元記事を表示

Rubyでハッシュをうまく使って注文の合計金額を計算する

この記事ではmacOSにインストールしたRuby2.6.3を使っています。

ゼロからわかるRuby超入門の練習問題(p176)を自分なりの解き方をしたのでメモします。
キーはシンボルで書くものだという思い込みがあったので、最初この方法での解き方ができませんでした。ハッシュの使い所を見極める力が必要だと感じました。

問:メニューは、コーヒー300円とカフェラテ400円の2つがあり、サイズはショートだと+0円、トールだと+50円、ベンティだと+100円になる。メソッドを使って注文をとってください。

“`ruby:ターミナルから注文がとれるバージョン
def price
puts “ご注文は何にしますか?”
item = gets.chomp
puts “サイズは何にしますか?”
size = gets.chomp
items = {“コーヒー” => 300, “カフェラテ” => 400}
sizes = {“ショート” => 0, “トール” => 50, “ベンティ” => 100}
total = items[item] + sizes[size

元記事を表示

Railsで個人開発してたら、Railsがめっちゃ叩かれて辛みだった話

こんにちは、だむはです。

去年の12月に個人開発している「sister」というサービスをリリースしたのですが、開発中にRails叩きがおこり、辛みだったので、その時のことをかこうと思います。ちなみに、サービスはまだベータ版です。

##「sister」ってどんなサービス?
「sister」は一言で言うと、IT業界に特化した女性向けのキャリア/スキルシェアサービスです。MENTAから多大なる影響を受けています。MENTAは「師弟関係」、sisterは上下関係をもたない「姉妹関係」と言う部分でシスターフット大切にしていこう!って感じです。

興味があったらみてってください。
[あなたのsisterを探そう](https://sisterwith.com)

##環境

sisterの開発はこんな感じです。

・Ruby
・Rails
・Stripe
・AWS S3
・Heroku
ちなみにローカルはDockerです。

はい、フロントエンドにモダンな技術も使ってないし、インフラもAWS使ってないです

##なぜこの環境なの?

それは、純粋に私一番使える言語がRailsだったからです!

元記事を表示

Rubyで文字列の出現回数を数える

この記事ではmacOSにインストールしたRuby2.6.3を使っています。

ゼロからわかるRuby超入門の練習問題(p154)を自分なりの解き方をしたのでメモします。
1対1対応しているものについてはハッシュをうまく使う必要があると気づいた。

問:文字列”caffelatte”の中で使われているアルファベットとその回数を数えてください。

“`ruby

hash = {}
hash.default = 0

#文字1つ1つを配列にしてアルファベット順に並び替える
array = “caffelatte”.chars.sort

#文字をキー,回数を値としたhashをつくる
array.each { |x| hash[x] += 1}

#最後に文字が何回使われていたかを表示する
hash.each { |letter, count| puts “#{letter}は#{count}回使われている”}
“`

元記事を表示

RubyでJSの即時関数みたいなことをやる

ちょっと例が悪いですが、自分用メモ。

↓こんなのがRubyで書きたかった。

“`js
const filepath = (() => {
return “hoge/moge/huga”;
})();
“`

別に普通に定義しても良いですが、処理部がごちゃごちゃしてくる場合は、変数の定義も処理部と切り離したいと思い、考えてみました。

“`rb
class Hoge
def initialize
@root = root
end

def filepath(path)
File.join(@root.call, path)
end

private

def root
# pathへの代入は初期化の@rootへ代入された時のみ
path = “hoge/moge/huga”
-> { path }
end
end

hoge = Hoge.new

p hoge.filepath(“a”) # => “hoge/moge/huga/a”
p hoge.filepath(“i”) # => “hoge/mo

元記事を表示

【Rails】raty.jsを使った評価機能を作る

raty.jsを使って、railsアプリに星画像付きの評価機能を実装する方法です。jqueryが必要です。

![ 2021-01-18 21.35.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244893/9fb4a95b-e445-3f8a-7ef9-56f396f79280.png)

## 環境
“`zsh
$ rails -v
Rails 5.2.4.4
“`
## jqueryを導入
“`rb:Gemfile
gem ‘jquery-rails’
“`
“`zsh
$ bundle install
“`
“`app/assets/javascripts/application.js
//= require jquery
“`

## jquery.raty.jsを作成
“`zsh
$ touch app/assets/javascripts/jquery.raty.js
“`
作成したファイルに、https://github.com/wbotelhos/raty

元記事を表示

エラー解決を通してdeviseのメソッドuser_signed_in?とcurrent_userの理解が深まった話

# 開発環境

Mac OS Catalina 10.15.7
ruby 2.6系
rails 6.0系

# 事の発端

転職用のポートフォリオとしてオリジナルアプリを作っていたある日のことでした。
未ログインユーザーが詳細ページに遷移するリクエストをローカルで行ったところ、以下のエラーが発生

![スクリーンショット 2021-01-18 20.02.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1035658/71eea597-92e5-d91e-d3f9-47ed914b0470.png)

# 解決法

結論から言うと  user_signed_in? &&  の条件を追加することで解決しました。

エラー時のコード

“`ruby:show.html.erb
<% if current_user.id == @post.user.id %>

<%= link_to '編集する', edit_post_path(@p

元記事を表示

[ruby]演算子について

## はじめに
こんばんは
私は某スクールに通っているものです
先月卒業したばかりなのですが学んだ事をアウトプットしております
前回、[Ruby]文字列で使えるメソッドを作ったので今回は演算子について触れたいと思います!

##演算子とは?

演算子とはプログラミングで計算したり、比較したりする時に使う記号です
これはめちゃくちゃ使うから覚えてくださいね

と言ったけどそのほとんどは小学校でやった+とかーとかばかりだから身構えなくていいかも

| | |
| —- | —-|
| + | 足し算 |
|-| 引き算 |
| *| 掛け算 |
| / | 割り算 |
| %| 余剰 |
|**| べき乗|
|Math::PI |円周率(π)を合わせる定数|
|Math.sqrt|平方根を求める|

ぶちゃけ、べき乗以下は半年プログラミング学習してたけど使わんかったから頭の隅に置いておいてください

“`
=> nil
irb(main):115:0> 1 + 1
=> 2
irb(main):116:0> 1 – 1
=> 0
irb(main):1

元記事を表示

テーブルにカラムを追加する方法

今回はmigrateファイルの記述をして追加する方法を実行します。

#migrateファイルを編集
まず、README.mdを参考にmigrateファイルを編集します。

“`README.md
## items テーブル

| Column | Type | Options |
| —————– | ———- | —————– |
| name | string | null: false |
| explanation | text | null: false |
| category_id | integer | null: false |
| state_id | integer | null: false |
| delivery_price_id | integer | null: false |

元記事を表示

ActiveRecord_RelationとCouldn’t find Item without an IDのエラーについて

# まず、ActiveRecord_Relation:とは

例えばコントローラーで

“`ruby

def index
User.all
end
“`
と定義した場合
Use.allで持ってきたもののことを言います。
この時、allはレコードとカラムの情報のみを持ってきます。

# Couldn’t find Item without an IDとは

要約するとIDが取得できませんよ。という意味

例えばコントローラーで

“`ruby

def index
User.find(params[:id])
end

“`

と定義したとします。

この時paramsの[:id]の部分が取得できません。ということになります。

# 状況

– このようなエラーが出る場合はどんな時か?

それはルーティングにネストをしていて、親になっているものから情報を取得しようとした場合である。

– なぜか?

シークエルプロなどでテーブルを確認すれば一目瞭然。
子要素に親要素の情報は入っていないから。

この時、allはレコードとカラムからとってくるという記述の意味がわかります。

元記事を表示

RSpec~Taskモデルのバリデーションテスト作成まで

#RSpecとは
Rubyにおけるテスティイングフレームワークのことです。

Rubyでは標準で`Minitest`という別のフレームワークがあります。[Ruby on Railsチュートリアル](https://railstutorial.jp/)でも`Minitest`でテスト方法を教わります。
ですが、実際に現場で使われているテスティイングフレームワークは`RSpec`が圧倒的に多いようです。

本記事では`RSpec`をインストールし、既に定義されているモデルに対してバリデーションテストするまでを記載します。

#使用技術のバージョン
・Ruby: 2.6.4
・Ruby on Rails: 5.2.3

#モデルの概要
今回取り扱うモデルは`user`モデルと`task`モデルです。

*[userモデル]*

“`ruby:app/models/user.rb
class User < ApplicationRecord has_many :tasks, dependent: :destroy validates :password, length: { mi

元記事を表示

Chefの概要を分かりやすく書いてみました

最近の現場で初めて、chefを使用しました。

あまり情報が少ないため、概要を書いてみました。

# Chefとはいったい??
![200px-Chef_logo.svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/355517/44db6e08-dcfc-e265-f329-b901e9ec8eb3.png)

ウィキペディアにはこう書かれていました。

#### RubyとErlangで記述された構成管理ツールである

ん??どういうこと??
 

すごく簡単に言えば、

#### chefはインフラ構築を自動化できるプラットフォームなのです。

# Chefを使用するメリット
Chefでインフラの構成を自動化すれば、環境構築時にすべて自分で用意する必要はありません。
繰り返し作業を集約でき、無駄な時間を減らせます。
大規模のプロジェクトによく使われるようです。

# ChefはRubyで書かれる

ChefはRubyで書けるため、Rubyの基礎知識が必要となります。

# Chefの主な構

元記事を表示

railsでほぼ静的なページの作り方

>引用先
>[Railsチュートリアル](https://railstutorial.jp/)

※ rails new appをしている状況で新しくページを追加するところからです

#ターミナルでコマンド実行

まずは作業ディレクトリへ移動

“`
cd ~
“`

移動後コマンド実行

“`
$ rails generate controller <コントローラ名> <アクション名> <アクション名> ・・・

# 例
$ rails generate controller StaticPages home help
“`
上記コマンドを実行すれば

・コントローラの作成
・ルーティングの設定
・ビューファイルの作成
を自動で作成してくれるので非常に便利かつ簡単ですね!

実際これだけでページは作れちゃいます。

#新たにページを追加したいとなった時
例えば、新たにaboutページを作成したいとなった時に、手動でファイルを作成したりコードを書けば追加もできます。

##手順
①ルーティングの設定
②コントローラにアクション追加
③ビューファイルの作成

###①ルーティング

元記事を表示

必ず役に立つ!Ruby on Railsでの開発で使えるデバッグコード

# こ~れなんなん、これなんなん
こんにちは。

開発で最も必要とされる技術ってデバッグ力だと思っています。特にバグを大量生産することが得意な僕にとって、デバッグ力はとても大事。

そこで、普段開発で使ってるデバッグ用のコードをまとめておこうかと思います。

## デバッグコード
Ruby on Railsで使える、デバッグで役に立ちそうなコードの一覧を書いていきます。なお、Rubyで使えるコードもあります。

byebug起動時や`rails console`で使用することを想定しています。byebugの使い方よく分からんて人は以下の記事で使えるようにしてください。
https://web-nari.net/2018/03/16/byebug/

### メソッド一覧
`hoge`という変数の参照できるメソッドの中で、メソッド名に`method_name`が含まれるメソッドの一覧を返します。

“`ruby
hoge.methods.select {|name| name.to_s.include?(“method_name”) }
“`

### メソッド定義場所
`hoge`

元記事を表示

Rails 記事詳細リンクは、ループ内でしか機能しない?

## 背景
Page#homeで記事一覧(Posts#index)を表示し、そこに記事詳細(Posts#show)をリンクを貼った。そのときに学んだ事の備忘録。

## 結論

記事詳細リンクはこう貼った。(成功したコード)

“`ruby
<% if @posts.any? %>

<% @posts.each do |p| %>

#記事詳細のリンク↓
++<%= link_to post_path(p), class: 'text-body' do %>

<%= image_tag p.image.url, class: 'img-fluid' %>

<%= p.title %>

<%= p.tag %>

<% end %>
<% end %>

元記事を表示

wrong number of arguments (given 1, expected 0)

いくつかエラー原因はあるかと思いますが、僕の場合は、paramsと[:id]の間にスペースが空いているという事でした。

“`ruby
#スペースが空いている
@post = Post.find(params [:id])
“`

エラーが消えた。

“`ruby
@post = Post.find(params[:id])
“`

元記事を表示

OTHERカテゴリの最新記事