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

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

kmyacc を独立させました(Fork 後)

# kmyacc

[前回](https://qiita.com/Kray-G/items/c77f2d5401c31290bfcd) fork しました、と報告した kmyacc ですが、オリジナルは10年程度メンテされていなさそうだったので、何かあった場合に自分でメンテできるようにするために独立したリポジトリに変更しました。

* https://github.com/Kray-G/kmyacc
* kmyacc 本体のライセンスはオリジナルと同様に GPL 2.0 です。
* ただし、kmyacc で出力したパーサー・ファイルの利用は自由(Public Domain)です。
* これもオリジナル同様。

### リリース

リリースしておきました。ビルド済 Windows 用の実行ファイルを zip でアップロードしてあります。

* v4.1.4+update.1
* https://github.com/Kray-G/kmyacc/releases

## 修正

新たに以下の修正を実施。

* Windows では kmyacc.ex

元記事を表示

Docker for Windows で Rails 6 + MySQL 8 の開発環境を構築する

## 背景
Windows で Rails の開発環境を作ろうとすると native extension などの関係で `rails new` した直後ですら `bundle install` が動かなかったりするので自分は結構ヤキモキすることが多いです。

解決策として `rails new` から `rails server` まで全て Docker のコンテナ内で完結するようにしているのですが、忘れがちになってしまう作業が多いのでまとめました。

`Docker for Windows` と掲げていますが `Docker for Mac` でも問題ないと思います。
※ が、Macの場合は素直に構築できると思うので Windowsユーザーをターゲットにしています

## ターゲット
– 初学程度の Docker/docker-compose の知識がある人
– Windows で Rails の開発環境をしたい人

## ゴール
– Windows で Rails 6 + MySQL 8 の開発環境が構築できる
– Ruby 2.7
– Rails 6.0.3
– My

元記事を表示

『フリマアプリ』カテゴリー別商品表示ページに遷移させる…前の記事のリファクタリング

#はじめに
https://qiita.com/mugioka/items/e079219814daee3591ae
前回の記事:point_up_tone4:にてクソみたいに汚いコードを書いてしまっていたので少々リファクタリングをしました:relaxed:

#開発環境

“`
macOS :Catalina 10.15.4
Ruby :2.5.1
Ruby on Rails:5.2.4.2
“`

###実際のコード

“`ruby
def parent
grandchildren_id = @category.indirect_ids
find_category_item(grandchildren_id)
end

def child
grandchildren_id = @category.child_ids
find_category_item(grandchildren_id)
end

def grandchild
@items = []
category_item

元記事を表示

form_withヘルパーのlabelの勘違い【ズボラな初学者向け】

#はじめに
form_withヘルバーを使った学習中に些細なミスでテストが通らなかったため、自戒のためにもここに記しておきます。

#lavelの部分に注目
記述したform_withヘルパーのコードは次のとおりです。どこが間違っているかわかりますか、、、

“`php:

ユーザー登録

<%= form_with model: @user, local: true do |f| %>

<%= f.label :last_name %>
<%= f.text_field :last_name, class: 'form-control' %>
<%= f.label :first_name %>
<%= f.text_field :first_name, class: 'form-control' %>

元記事を表示

【超初心者用】RubyでBINGOカードを作る手順を丁寧すぎるぐらいに書いてみた(1)

#はじめに

“`
B | I | N | G | O
8 | 16 | 36 | 57 | 67
10 | 24 | 33 | 58 | 72
2 | 17 | | 51 | 69
7 | 18 | 45 | 59 | 62
4 | 21 | 37 | 53 | 71
“`

今回、[CodeIQに「ビンゴカード作成問題」を出題しました。みなさんの挑戦をお待ちしてます!](https://blog.jnito.com/entry/2015/02/09/101018)を参考にRubyでBINGOカードを作るを作ってみようと思いました。

しかしですね、インプットしかしてなかった人にはBINGOカードと言えど、これをアウトプットするのは多少なりとも苦戦するのではないでしょうか?

今回は、自分なりに順を追ってどのように作成していったかを記載していきます。
本当に、超初心者用にめちゃくちゃ丁寧に手順を記しています。

『そんな基本的な事・・・』と思わずみていただけると幸いです(笑)

そして何よりも、**手順も考え方も無茶苦茶ではあると思います。**

試行錯誤

元記事を表示

デイリードリル(シーザー暗号解読)

## Question
シーザー暗号と呼ばれる暗号があります。これはアルファベットをある文字数分ずらすという暗号方式で、例えば「a」を2文字分ずらす(進める)と「c」になります。

下記の文字列があり、これを3文字ずらす(戻す)と復号できることがわかっています。それを実現させるコードを記述してください。

char = “frqjudwxodwlrq”

## Answer

“`ruby
char = “frqjudwxodwlrq”

char_ary = char.split(“”) # => [“k”,”h”,”o”,”o”,”r”]
changed_char_ary = [] # 空の配列を用意
char_ary.each do |char|
changed_char_ary << (char.ord - 3).chr # 3を引いた文字コードを文字列に変換する =>[“h”,”e”,”l”,”l”,”o”]
end

puts changed_char_ary.join # => “congratulation”

“`

元記事を表示

Day9 #RailsApp作成手順~Part2~

#### 5. newアクションの設定
##### Ⅰ. ルーティング
“`config/routes.rb
Rails.application.routes.draw do
resources :tweets, only: [:index, :new]
end
#newのpathを構築
“`

##### Ⅱ. コントローラー定義
“`app/controllers/tweets_controller.rb
def new
@tweet = Tweet.new
end
#Tweetクラスのインスタンス@tweetを生成
“`

##### Ⅲ. ビュー作成
“`erb:app/views/tweets/new.html.erb

<%= form_with(model: @tweet, local: true) do |form| %>

投稿する

<%= fo

元記事を表示

子レコードがないと保存ができない親モデルの連動テストを作ろうとして四苦八苦した話。

#前回までのあらすじ
親モデルと子モデルの単体テストはできたのですが、親モデルが子モデルのレコードがなくても保存できてしまっていることに気付きました。
今回は子レコードが保存できない場合に親レコードで保存できないようにバリデーションを組もうとして四苦八苦したことを記事に残していこうと思います。

#下準備
[前回記事](https://qiita.com/0thefool/items/d38c109a0c2c76feb164)とか[前々回記事](https://qiita.com/0thefool/items/5e5935204c5a62f8bcce)とか[その前の記事](https://qiita.com/0thefool/items/5af0f17f0075e7e0e013)とかの下準備を参照ください。

#今回のテスト環境の準備
###バリデーションの追加
“`validates :images,presence: true“`を追記します。

“`app/models/items.rb
(中略)
validates :title,:images,presence: t

元記事を表示

【メソッド集】 rails メソッド まとめ 基礎 随時追加

#メソッド まとめ 随時更新
参考:https://diveintocode.jp/blogs/Technology/RailsMethod01
参考:https://diveintocode.jp/blogs/Technology/RailsMethod01

##new
“`
hoge.new # DBへ新たにインスタンスを追加
“`
##save
“`
hoge.save # DBへ入力値を保存
“`
##all
“`
hoge.all #DBから関連モデルのデータを全て取得
“`
##find
“`
hoge.find(条件) # DBから条件を見つける
“`
##destroy
“`
@book.destroy #DBの指定のデータを消去
“`
##where
“`
hoge.where(条件) # DBから条件全てを取得
“`

##each
“`
<%= @books.each do |book| %> # 配列でDBからデータを取得
“`

##sort
“`
hoge.sort # 数字:小→大、文字:アルファベット順、並び替え
“`

元記事を表示

【開発ログ⑤】見たことないエラーでビューが表示されなかった話

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回実施する内容
前回までで、テーブルの作成までが完了しました。今回は、「index,html.haml」のビューページの表示までを目指します。手順は次の通りです。
– ルーティングファイルを編集
– branchコントローラーの作成と編集
– index.html.hamlの作成
– ローカルからrootパスへアクセス
– 表示されていればOK

# 最初は順調
ルーティングの編集、branches

元記事を表示

【開発ログ④】順番が違うマイグレーションでつまずいた話

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回実施する内容
昨日までで、Railsで新規アプリケーションの作成、データベースの作成までは完了しました。ローカルサーバーを起動し、「localhost:3000」にアクセスしてRailsのトップ画面の表示まではなんとかできているというところからスタートです。

今回の実施内容は以下のとおりです。
– モデルファイルの作成
– deviseの導入
– マイグレーションファイルの編集と実行
– 問題な

元記事を表示

Railsで新規にアプリを作成する

#手順

ターミナルにて

“`
$ rails バージョン new アプリケーション名 -オプション名
“`

で新規アプリを作成することができます

バージョンはアプリケーションをRailsのどのバージョンを用いて作成するのかを指定します。

オプションはハイフンの後に、指定することで様々なオプションをつけることが出来ます。

仮に、Railsのバージョンは5.2.3、データベースをMySQLに指定して新規アプリを作成する場合

“`
$ rails _5._2._3_ new アプリケーション名 -d mysql
“`

となります。

オプションの種類は様々ですので調べてみて下さい。

これで新規アプリケーションは作成できましたが、データを蓄積するにはデータベースが必要です。

[webアプリケーションの仕組みはこちら](https://qiita.com/kouhei_matuura/items/ff6e86e80379deb864cf)

#データベースの作成

webアプリケーションはクライアント(今使っているPCなど)とサーバー(アプリケーションとデータベ

元記事を表示

Ruby でツイートを取得する

何番煎じ?

[twitter gem](https://github.com/sferik/twitter) を使います。Twitter の開発者登録とアプリケーション登録は済ませているものとします。

以下は irb 上で動作確認をしました。

## 認証

APIキーとAPIシークレットによって認証をします。[Example](https://github.com/sferik/twitter/blob/master/examples/Configuration.md#configuration) を読む限り、[bearer token を使っている方の認証](https://developer.twitter.com/en/docs/basics/authentication/oauth-2-0)のはずです。([他にも認証方法があり](https://developer.twitter.com/en/docs/basics/authentication/overview)、目的によって使い分けます。)

“`ruby
client = Twitter::REST::Clien

元記事を表示

DockerをつかったVueとRailsの環境にAPIを実装する

この記事は[DockerをつかってVueとRailsの開発環境にユーザー認証機能を実装する](https://qiita.com/harachan/items/24f7fbda7c41a4115bf5)の続編です。

# 一連の記事
1. [DockerをつかってVueとRailsの開発環境をつくる](https://qiita.com/harachan/items/4561d54948fe650cf611)
2. [DockerをつかってVueとRailsの開発環境にユーザー認証機能を実装する](https://qiita.com/harachan/items/24f7fbda7c41a4115bf5)
3. [DockerをつかったVueとRailsの環境にAPIを実装する](https://qiita.com/harachan/items/ad9fce3f4b84f49d583a)この記事!!

# この記事の目指すところ
– 前回まで作ってきた環境に新しいAPIを追加する
– 今回はユーザーが出会ったことのある人を登録する機能を作ってみます

# サーバー側
## テー

元記事を表示

ネストしているモデルに対するform_withの書き方

#ネストしているモデルに対するform_withの書き方

ネスト関係にある投稿記事(Postモデル)とコメント(Commentモデル)でcommentを投稿するformファイルでエラーが発生した際の対処法をまとめます。

“`ruby:routing
resources :posts do
resources :comments
end
“`
“`ruby:問題のコード_form
<%= form_with(model: comment) do |form| %>

<%= form.label :content %>
<%= form.text_field :content %>

<%= form.hidden_field :post_id, value: post.id %>

<%= form.submit %>

<% end %>

“`
comments_pathというパスが見つからないというエラ

元記事を表示

[ハッシュ]**を使ったハッシュの展開

技術書でハッシュについての学習をする中で、
ハッシュの展開方法を学んだのでまとめてみました。

***
“`
#下準備として、rails consoleのsandbox環境を開く
rails c –sandbox
“`

“`
#ズームインのアイドル、そらじろうの特徴をハッシュにして、変数sorajiroに代入

pry(main)> sorajiro = { color: ‘blue’, type: ‘animal’, nationality: ‘japan’ }
=> {:color=>”blue”, :type=>”animal”, :nationality=>”japan”}
“`
“`
#sorajiroのキーと値を**で展開させる

pry(main)> { sex: ‘male’,**sorajiro }
=> {:sex=>”male”, :color=>”blue”, :type=>”animal”, :nationality=>”japan”}
“`
ハッシュsorajiroを展開することができた。

“`
#sorajiroのキーと値を

元記事を表示

puts, print, pメソッド

ターミナルへの出力で多用される、puts, print, pメソッドのちがいについて、あやふやなところがあったので、
ここでそれぞれのちがいをまとめておきます。

|メソッド |出力後の改行|配列の表示|呼び出すメソッド|戻り値|
|——|———-|——–|———–|—–|
| puts | あり | 要素ごとに改行| to_s | nil |
| print | なし | 改行しない| to_s | nil |
| p | あり | 改行しない | inspect | 引数のオブジェクト |

##putsメソッド
putsメソッドは改行を加えて、変数の内容やメソッドの戻り値をターミナルに出力します。
putsメソッド自身の戻り値はnilになります。

“`console
irb(main):001:0> puts 123
123
=> nil

irb(main):002:0> a = [1, 2, 3]
=> [1, 2, 3]

irb(main):003:0> puts a
1
2

元記事を表示

RailsでAPIを作ってみた(後編)

こんにちは!モリタケンタロウです!
[前回](https://qiita.com/MORITAKENTARO/items/4c52276b74cd3620886e)に引き続き、Ruby on RailsでAPIを作る方法について紹介します。

* [RailsでAPIを作ってみた(前編)](https://qiita.com/MORITAKENTARO/items/4c52276b74cd3620886e)

# 開発環境
* ruby 2.6.3p62
* Rails 5.0.7.2

# Let’s Try Anyway
前回は、コントローラーの作成とルーティングの設定を行いました。
今回は、モデルの作成とCRUD処理の実装を行います。

## モデルを作成
まずは、モデルを作成します。
といっても、今回は単純にテキストを格納する箱を用意してあげるだけです。

“`bash
$ rails g model content text:string
“`

モデルを作成したら、DBにモデルの定義を反映させます。

“`bash
$ rake db:migrate
“`

ちゃん

元記事を表示

RailsでAPIを作ってみた(前編)

こんにちは!モリタケンタロウです!
今回はRuby on RailsでAPIを作る方法について紹介します。

後編は↓

* [RailsでAPIを作ってみた(後編)](https://qiita.com/MORITAKENTARO/items/8cf03f876907a9b15530)

# 開発環境
* ruby 2.6.3p62
* Rails 5.0.7.2

# Let’s Try Anyway
今回はひとまず、コントローラーの作成とルーティングの設定を行います。

## APIモードでRailsアプリを作成
今回はAPIモードでRailsのアプリを作ります。
Ruby on Railsで普通にアプリを作ろうとすると、MVCモデルを前提に色々と部品を用意してくれますが、APIモードで作成することで、ViewとかAPIに要らないものを除いた最小構成でアプリを作ることができます。

“`bash
rails new rails_app -d mysql –api
“`

ちなみにDBはMySQLを採用しています。
※何かとエラーが出た場合は↓を試してみてください。

元記事を表示

Rubyの環境構築

# 新規アプリ作成

#Homebrewのインストール
[macOS用パッケージマネージャー — Homebrew](https://brew.sh/index_ja.html)

#Homebrewのバージョン確認

“`
brew -v
“`

#rbenv ruby-buildのインストール

“`
brew install rbenv ruby-build
“`

#rbenvのバージョン確認

“`
rbenv -v
“`

#rbenvの設定

“`
$ echo $SHELL
“`

↑の実行結果に応じて次のコマンドが変わる。

実行結果が /bin/bash の場合、以下のコマンド

“`
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.bash_profile
$ source ~/.bash_profile
“`

実行結果が /bin/zsh の場合、以下のコマンド

“`
$ echo ‘eval “$(rbenv init -)”‘ >> ~/.zshrc
$ source ~/.zshrc
“`

#イン

元記事を表示

OTHERカテゴリの最新記事