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

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

ruby yes no memo

aa

元記事を表示

点字メーカープログラムの動画レビュー Part 2 – Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-

## この記事は何?
Qiita Advent Calendar 2021「Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念-」で投稿してもらったコードを出題者である僕、伊藤淳一が動画でコードレビューしてみました。この記事はその第2回です。

https://qiita.com/advent-calendar/2021/ruby-challenge

前回のレビュー動画はこちらです。

https://qiita.com/jnchito/items/26e8bd7c635e3d32e620

### アドベントカレンダー参加者のみなさんへ

ネタバレになってしまうので、自分の投稿が完了するまでこちらの記事(動画)は見ないようにお願いします〜 :pray:

### レビュー対象の記事はこちら!

今回レビューさせてもらったのは以下の6日目から10日目の記事です。投稿してくれたみなさん、どうもありがとうございました!

@haruguchiyuma さん

https://haruguchi-yuma.hatenablog.com/entry/2021/12/06

元記事を表示

Faraday 2からアダプターの扱いが変わった (Faraday::Adapter::Test::Stubs::NotFound)

## 初めに

Faraday 2がアルファリリースされており、動作を検証してみたところ以下のようなエラーが発生しました。

“`
no stubbed request for get http://localhost:4567/ (Faraday::Adapter::Test::Stubs::NotFound)
“`

Faradayのバージョン: `v2.0.0.alpha-3`

## 結論

UPGRADING.md (v2.0.0.alpha-3) を見る

https://github.com/lostisland/faraday/blob/v2.0.0.alpha-3/UPGRADING.md

具体的には、

– アダプターがFaradayのcoreから外れたので、別途gemのインストールが必要
– デフォルトアダプターが `:test` になっているので、自身で設定する必要がある

“`diff_ruby
require ‘faraday’
+ require ‘faraday/net_http’

+ Faraday.default_adapter = :

元記事を表示

産業用ロボット販売営業職からエンジニアになってみて

##前職の内容
制御機器を取り扱う商社でSE(“セールス”エンジニア)をやっていました。
要は、メーカーの生産技術の方などに、省人化の提案をし、ロボットを買ってもらう営業の仕事です。

##エンジニアになろうと思ったきっかけ
慣れてくると、作業をこなすだけの仕事をやるのが自分の性には合わなかったんです。エンジニアは技術の移り変わりが比較的早い職業ですし、どんどん新しい事にチャレンジできますよね。

まず前職の仕事に飽きが来たというお話をします。
SEと言っても技術的には、物体を掴んで別の場所に移動させて置くだけの簡単なプログラムを書くだけの事しかやりません。
しかもそのプログラムとは、メーカー専用のタブレットのGUI上でボタンを押し、ツリー上に各処理を追加していくだけの操作なのです。
SEといっても、やはり営業なので、いかに製品の良さを顧客に伝えれるかに注力し、顧客に買ってもらうのがメインのお仕事です。
買ってもらうためにはどうしたら良いか、次の発注に繋げるためにはどうしたら良いか、という試行錯誤はあったものの、技術的な試行錯誤をし、できなかった事をできるようにする過程がなかったので、

元記事を表示

【Ruby のまずいコード】数字を削除

# お題

引数として与えられた文字列中の半角数字を削除した文字列を返すメソッドを定義してください。

# コード

“`rb
def delete_digits(str)
str.gsub(/\d/, “”)
end
“`

# 改善

このコードは特別まずいというほどではありませんが,決まった文字を削除するなら専用のメソッド [String#delete](https://docs.ruby-lang.org/ja/3.0.0/method/String/i/delete.html) があります。
これを用いると

“`rb
def delete_digits(str)
str.delete(“0-9”)
end
“`

と書けます。こちらのほうがシンプルですし,速度もかなり上です。

なお,数字**以外**を削除する場合は `delete(“^0-9”)` と書けます。

元記事を表示

初歩的なクラスとインスタンスとメソッドの扱い方で沼った話

プログラミングを学び始めて1日目でも書けそうなコードで躓いてしまったのですが、やっぱり基本は大事だなと改めて思ったので、書き留めることにします。
皆さんは以下のコードを実行するとどのような結果になるかわかりますか。

“`ruby
class Human

puts “今から喋ります!”
say

def say
puts “こんにちは”
end
end
“`

結果は以下のようにエラーとなります。

“`shell
$ ruby human.rb
今から喋ります!
human.rb:4:in `‘: undefined local variable or method `say’ for Human:Class (NameError)
from human.rb:1:in `

“`

エラーコードを読んでエラー原因がわかった方も多いと思います。
なるほど、メソッドを先に定義していないからエラーになったんだ。と。
では、さっそく以下のように書き直しましょう!

“`ruby
class Human

元記事を表示

改訂版・チェリー本発売記念企画のRubyプログラミング問題にチャレンジ!

# 最初に

本記事は「改訂版・チェリー本発売記念の企画によるアドベントカレンダー」の11日目の記事で、点字プログラムの問題を解いてます。
詳細は、次のリンク先をご覧下さい。

https://qiita.com/advent-calendar/2021/ruby-challenge

自分のRuby歴について簡単に紹介すると、以前は下記のようなことをしてました。
– チェリー本の輪読会にときどき参加
– Rubyで競技プログラミング
– Railsアプリをちょっと作成

で、最近はRubyを書いてなかったのですが、
この企画で自分の書いたコードを見たいというメッセージを自分に送ってくださった方がいて、
企画を読んでみると面白そうだしRubyのリハビリがしたく、今回はやってみることにしました。

# プルリクエストのリンク、自分が書いたコード

下記リンク先が、実際のPRです。

https://github.com/JunichiIto/tenji-maker-challenge/pull/19

実際に作ったコードですが、
濁音・半濁音など一切対応しておらず、
課題の要件に

元記事を表示

[Rails] param is missing or the value is empty error と向き合う

##はじめに

こんにちは!
DMM WEBCAMP Advent Calendar 2021? 11日目を担当させていただきます!
普段DMMでメンターをさせていただいております、@keijitsumoriです。

この記事では、Railsを始めた頃、躓きがちなタイトルのエラーについて、考えられる原因をあげ、その一つについて、RailsのフォームとModel.newの解説を挟みながら、なぜエラーになってしまうのかを、自分なりに説明できればと考えております。

このエラーをきっかけに、Railsの見えていなかった部分が自分も見えるようになりました。
ご指摘等いただけますと幸いです。

#### この記事の対象者

– param is missing or the value is empty errorが解決できない。
– param is missing or the value is empty errorが解決できたが、理由がわからない。

#### この記事でわかること
– 上記のエラーについて、自分が体験したことのある原因を紹介し、エラーの裏で何が起こっているのか

元記事を表示

Ruby on Rails【プロジェクトを開始する】

#環境
Rails version: 6.0.3
Ruby version: ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
AWSのCloud9というIDEを使用しています。

ここでは環境構築については割愛します。
なお、環境構築についてこちらを参考にしました。
https://railstutorial.jp/chapters/beginning?version=6.0#code-gemrc

#アプリの開始
作成したいディレクトリに移動して以下のコマンドを実行してください。

“`
$rails _6.0.3_ new app_name
“`
バージョンの指定は任意で、ここでは明示的に6.0.3にしています。app_nameは作りたいアプリケーションの名前です。
このコマンドだけでひとまずアプリを作ることができました。

#ローカルサーバの起動
“`
$rails server
“`
このコマンドを実行するだけです。
Cloud9を使用していないときは
http://localhost:3000/
にアク

元記事を表示

Rails6でJavascriptが上手く動かない事象への対処法

はじめに

Railsアプリを作成している中で「application.html.erb」ファイルに記載していたJavascriptのコードを別ファイルに移動させたものの、Javascriptファイルが上手く動かなく、苦戦しましたため、備忘をこめて記載致しました。

開発環境

– Mac
– Ruby 2.7.2
– Rails 6.1.3.1

今回実装したいこと

以下コードに記載されてある2つ目のscriptタグに記載されているコードを新たにJavascriptファイルを作成して、「app/javascript/packs」下に格納することです。そして、新たに作成したJavascriptファイルをビューである「app/views/users/show.html.erb」から読み込むことです。

“`javascript:app/views/layouts/application.html.erb



StopSweets

元記事を表示

RailsアプリをHerokuデプロイでエラー

RailsアプリをHerokuデプロイ時に2つのエラーが発生しました。
今回はそのうちの1つをメモとして残します。
#環境
* macOS Monterey 12.0.1
* Ruby 3.0.3
* Bundler 2.2.32
* Rails 6.1.4.1

#heroku push でエラー発生

`$git push heroku main`
で、以下のエラーが発生しデプロイに失敗。

“`text:エラーメッセージ
remote: ###### WARNING:
remote:
remote: You have not declared a Ruby version in your Gemfile.
remote:
remote: To declare a Ruby version add this line to your Gemfile:
remote:
remote: “`
remote: ruby “2.7.4”
remote:

元記事を表示

DeviseのUserテーブルにカラムを追加する

###環境
ruby 2.6.3
rails 2.6
cloud9

Gem:devise

###この記事の目標
Devise(Gem)でUserテーブルを作成し、ユーザーネームを新規登録(Sign up)で登録できるようにする

#1 DeviseでUserテーブルを作成

Deviseを使用するとユーザーテーブルを簡単作成してくれます。
まず初めにモデルを作成。

Deviseを使用する場合のモデル作成コマンド(今回はUserモデル)

“`ruby
$rails g devise User
“`

※通常のモデル作成コマンド

“`ruby
$rails g model モデル名
“`
記述方法が違うので注意

**コマンドを実行すると作成される**
**ファイル**
1.モデル(User)
2.マイグレーションファイル

**カラム**
Railsの思想

##COC(Convention over Configuration)
**「設定より規約」**
「設定がほとんどの場合で共通ならば、その設定をアプリケーションのデフォルトにすべきである」という考えに基づいている。

メリット

– 他言語のように多くの設定ファイルを書かなくて良い。
– 共通ルールに則ってエンジニア同士のコミュニケーションがスムーズになる。

####命名ルール
データベースのテーブル名はモデルのクラス名の複数形にする。

“`
モデル / クラス | テーブル / スキーマ
Article | articles
LineItem | line_items
Deer | deers
“`

####スキーマのルール
– 外部キー:カラムはテーブル名の“`単数形_id“`にする必要がある。
(例: “`item_id“`、“`order_id“`)
– 主キー:デフォルトでは“`id“`という名前の“`integer“`カラムがテーブルの主キーに使われる(PostgreSQLやMySQLでは“`bi

元記事を表示

RubyやRailsのerbを用いて、文末を「…」に置き換える方法

# はじめに
オーバーフローしてしまったテキストの省略をさせる際に、文末を「…」などに置き換えたいことがあるかと思います。

“` 
開発環境を紹介します。DBにはMySQLを使用しています。Mac OSのバージョンは…
“`

CSSのtext-overflowでも適用できるみたいですが、今回はあえてRubyの力を頼りにしてみました。また、Railsのlink_toを使うことで「…」をリンク化する方法もご紹介します。

# Rubyの場合
Rubyでは表示したい文字列の操作や、文字列内に式や変数を組み込むことが簡単にできます。

“`hoge.rb
exam_text = “テスト文章です。今日もいい天気ですね。懐が寒いです。”
“`

以下の例では、変数exam_textに文字列を代入している前提で記述していきます。

## そのまま表示する

“`hoge.rb
p exam_text
# => “テスト文章です。今日もいい天気ですね。懐が寒いです。”
“`

## 表示する文字列の文字数を指定する。
**文字列[0..n]**と範囲指定をすることで**指定の文字

元記事を表示

【Ruby】クラス内要素の記述順序

##クラス内要素の記述順序

– クラスメソッド
– 初期化メソッド
– パブリックなインスタンスメソッド
– プライベートメソッド

“`ruby
class Sample
# publicなクラスメソッドはその次にインライン形式で書く(class << selfでもよい: 後述) def self.some_method end # 初期化メソッドはクラスメソッドと他のインスタンスメソッドの間に書く def initialize end # publicなインスタンスメソッドはその後に書く def some_method end # protectedメソッドやprivateメソッドは末尾にまとめる protected def some_protected_method end private def some_private_method end end ``` - クラスメソッドが複数ある場合は```class << self```を使うほうが向いてる ```ruby class Sample

元記事を表示

【Rails】resourcesとresourceの違い

表記ミスかと思ったらちゃんと“`resource“`も存在した。

##resources

“`routes.rb

resources :posts

“`

“`
Prefix Verb URI Pattern Controller#Action
posts_path GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post_path GET /posts/new(.:format) posts#new
edit_post_path GET /posts/:id/edit(.:format) posts#edit
post_path GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format)

元記事を表示

Ruby on Rails 備忘録

https://prog-8.com/

##新規プロジェクト
* 入力したアプリケーション名と同名のフォルダが作成され、その中に開発に必要なフォルダやファイルが用意されます。

“`
rails new tweet_app
“`
##サーバーの起動
* 開発中のアプリケーションをブラウザで表示するためには、サーバーというものを起動する必要があります。サーバーの起動は、「rails server」というコマンドを実行するだけで完了です。
サーバーを起動した後、ブラウザで「localhost:3000」というURLにアクセスすると、右図の初期画面が表示されるようになります。

“`
rails server
“`
##ビュー /トップページの作成

* 新しいWebページが自動で作られ、「localhost:3000/home/top」というURLにアクセスできるようになります。

“`
rails generate controller home top
“`
|ポイント|説明|備考|
|—-|—-|—-|
|top.html.erb|ディレクトリ:app/vi

元記事を表示

【Jbuilder】うまくJSONを返せないときに確かめること

##その1:名前一致しているか
ファイル名やルーティングが一致してないとエラーが出たり、JSON表示できない。
特に2回くらい“`複数形s“`忘れしてるのでもう忘れない。

“`routes.rb
namespace :api, format: ‘json’ do
namespace :v1 do
resources :post_infos, only: [:index]
end
end
“`

“`app/views/api/v1/post_infos/index.json.jbuilder
json.result ‘success’
json.post_infos do
json.date @post_infos[:date]
json.genre @post_infos[:genre]
json.like_count @post_infos[:like_count]
end
“`

##その2:APIアプリケーションコントローラーを継承しているか

“`app/controllers/api/v1/post_infos_controlle

元記事を表示

.idと_id 違いについて ruby rails ルーティングのネスト 親子関係

〇〇.idでしかうまくいかない時と〇〇_idでしかうまくいかない時ありますよね

一度は学習したんですがふと疑問に思い説明できなかったので自分の解釈で説明してみます。

まず基本は〇〇.idなど「.」を使うことで解決できます。

ではなぜ〇〇_idのような時が発生するんでしょうか?

それはルーティングのネストにあります。

ルーティングにおけるネスト(親子関係を示す)とは、コントローラーのルーティングの中に、別のコントローラーのルーティングを記述することです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2274768/596e9b6c-4dbe-211e-4ce3-47c3c0061d65.png)

こうなると「 _ 」が発生してしまいます。

itemsの中にordersがいますよね、これで親がitems 子がorders になります。

なぜかというと、
![image.png](https://qiita-image-store.s3.ap-northeast

元記事を表示

Ruby 備忘録

##コメント コンソールログ
“`rb
#コメント
puts “hello world”
“`

##変数 文字列との連結
“`rb
name = “阿部寛”
puts name
#○
puts “私は#{name}です”
#× エラー
puts “私は” + name + “です”
“`
|ポイント|説明|
|—-|—-|—-|
|#{変数}|特に無し||
|””|ダブルクウォーテーションで囲う||

##配列
“`rb
languages = [“ラーメン”, “カレー”, “寿司”]
#ラーメンを出力
puts languages[0]
“`

##if
“`rb
score = 73
if score > 80
puts “優”
elsif score > 60
puts “良”
else
puts “不可”
end
“`

元記事を表示

OTHERカテゴリの最新記事