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

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

findメッソドで取得したレコードをhashに変換

#attrubutesメソッドをつかう
“`answer_controller.rb
class AnswersController < ApplicationController def create Answer.create(Question.find(params[:id]).attributes) end end ``` findメソッドでQuestionクラスのレコードを取得後、 attributesメソッドでハッシュに変換することで Answerクラスにレコードを保存することが可能になった。

元記事を表示

Rubyのメソッド(配列編)

### はじめに

[Ruby API](https://rubyapi.org/2.7/o/array)を読んでいて、Rubyにそんなメソッドあるの!?と面白くなったメソッドを書いていきます。

バージョンは2.7です。

色々なメソッドがあって勉強になりました。

### compact、compact!

配列の中の`nil`を取り除いてくれます。

`nil`だけを狙い撃ちしてくれるだなんてRubyさん優秀ですね(使い所はピンと来ていない)

“`rb
arr = [‘foo’, 0, nil, ‘bar’, 7, ‘baz’, nil]
arr.compact #=> [‘foo’, 0, ‘bar’, 7, ‘baz’]
arr #=> [‘foo’, 0, nil, ‘bar’, 7, ‘baz’, nil]
arr.compact! #=> [‘foo’, 0, ‘bar’, 7, ‘baz’]
arr #=> [‘foo’, 0, ‘bar’, 7, ‘baz’]
“`

### delete_if、keep_

元記事を表示

【CircleCi】Railsアプリに導入(設定ファイルについて)

## Qiita投稿の背景
Railsアプリの静的コード解析テストに「RuboCop」、単体テストと統合テストに「RSpec」を使用しています。
上記二つのツールを学習を進める過程で、CIツールというものに巡り合いました。調べていくと、使わない手はないと思い、また開発環境に「Docker」を導入していたこともあり、早速Railsアプリに導入してみました。
YAMLベースで設定することができるので、そこまで難度は高くないと思いましたが、自分の備忘録、アウトプットによる知識の定着も兼ねて記録します。

## この記事の対象者
– Dockerの概念をなんとなく知っている方
– テストの概念について理解している方
– CircleCIのアカウントがあり、GitHub(Railsのリポジトリ)を連携している方

## 環境
– ruby 2.5.1
– Rails 5.2.4.1
– Mysql 5.6.43
– 静的コード解析テストに「RuboCop」、単体テストと統合テストに「RSpec」

## CircleCIって何?
– 「 CircleCI 」 → CIツールの中の一種

– 「

元記事を表示

MySQLが起動できない時の対処法

#環境

macOS Mojave 10.15.1

MySQL 8.0.15

# エラー文

####エラー文1
dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

####エラー文2
ERROR! The server quit without updating PID file

#解決方法

####MySQLのデータファイルやログなどが格納されているディレクトリを削除する
$ sudo rm -rf /usr/local/var/mysql

####MySQLを再インストール
$ brew uninstall mysql
$ brew install mysql

####MySQLを起動
$ mysql.server start
Starting MySQL
SUCCESS!

#感想

エラー文1でググっていたために、かなり時間がかかりました

エラー文2でググってみたらこのやり方ですんなり

詳しくは参考記事を見てください

#参考記事

元記事を表示

rbenvをシステム全体で利用できるようにする

rbenvをユーザー毎ではなく、システム全体で共有して利用できるようにします。

# 前提
* gitが使用可能
* rbenv関連の書き込み権限を持つグループとして`rbnev`グループを作成、必要なユーザーを所属させる

# rbenvインストール

## rbenvを操作できるグループを追加
“`shell-session
$ sudo groupadd rbenv
“`

### 追加したグループにユーザを追加
“`shell-session
$ sudo gpasswd -a USERNAME rbenv
“`

## rbenv用のディレクトリを作成

“`shell-session
$ sudo mkdir /usr/local/rbenv
“`

### ディレクトリの所有者(グループ)を変更
“`shell-session
$ sudo chown .rbenv /usr/local/rbenv
“`

### ディレクトリにパーミッションを設定
“`shell-session
$ sudo chmod 2775 /usr/local/rbenv

元記事を表示

【namespace】 admin(管理者)用、URL作成

#【ゴール】 
「namespace」を使用してURLをカスタマイズ

例: http://localhost:3000/admins/top  ←みたいな感じにしたい。

#【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

#【実装】
まずは新規アプリケーションを作成

“`Mac内.terminal
$ rails new (アプリケーション名)
       ↓
$ cd (アプリケーション名)
       ↓
$ rails s -b 0.0.0.0
“`

アプリケーションが起動するかを確認

![スクリーンショット 2020-04-18 23.36.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/620689/30cf1b04-4a20-2647-1dd1-54f83149555a.png)

次に config/routes.rbへ移動し、以下のコマン

元記事を表示

消費税改正に備える(テスト)

## はじめに
[消費税改正に備える](https://qiita.com/ken1flan/items/3a2fa9647cc8088fe88f)っていったって、お金のことなんだからテスト欲しいよねって思って、テストのほうも準備しました。

テストのソースは長くなりがちなので、[こちら](https://github.com/ken1flan/with_tax_sample/tree/master/spec)を見てみてください。

## 方針
テストはモジュールのほうでガッチリやって、モジュールをextendしたクラスのほうはメソッドが使えることくらいを確認するくらいにします。

## [モジュールのテスト](https://github.com/ken1flan/with_tax_sample/blob/master/spec/with_tax_spec.rb)

モジュールのテストで、ちょっとおもしろそうなところだけ、ピックアップします。

### [テストごとにちゃんと作り直されるクラス](https://github.com/ken1flan/with_tax_sample/

元記事を表示

railsチュートリアル 12章 初心者が意識すべき事

#初心者がrails チュートリアル12章で意識すべき事
特に無し
##理由
これまでの章をある程度理解しているとスムーズに進むから。
なので、ここはスッと乗り越えましょう!

元記事を表示

bundle installとbundle updateの違いとは?

rails tutorialを25日間かけてやり終えた和己です。
かなり挫折しかけましたがなんとかやり終えました。

そこでわからない用語が複数あったので復習をかねてまとめていきたいと思います。

今回は「**bundle install**と**bundle update**の違い」についてまとめます。

##必要な事前知識3つ
bundle installとbundle updateの違いを知る前に知っておくべき事前知識が3つあります
### Bundlerについて
Bundlerはgemを管理するためのgemです。Bundlerを使用することでbundle installやbundle updateコマンドを使用することができるようになります。

**gem**とはrubyのライブラリのことです

###gemfileについて
bundlerがgemsを探す時に何に基づいて探すと思いますか?
それがgemfileです。

なので簡単に言ってしまうとgemfileは「**設計図**」のようなものです。

###gemfile.lockについて
gemfileだけだと、本番環境と開発

元記事を表示

Rack を読む / WEBrick が起動するまで

最近、社内で Rails 関係のコードを読む会を持ち回りでやっていて、今週は僕が担当だったのだけど、Rack をもうちょっとちゃんと知りたかったので、Rack 対応の軽量サーバーである WEBrick を読んだ。pryで実行しながら読んだのだけど、流れを整理しておく。

## TL; DR

具体的には、[公式サイトのトップページ](http://rack.github.io/)に書かれた以下がどのように立ち上がりリクエストを処理するかを追った。

“`ruby
require ‘rack’

app = Proc.new do |env|
[‘200’, {‘Content-Type’ => ‘text/html’}, [‘A barebones rack app.’]]
end

Rack::Handler::WEBrick.run app
“`

ファイルで言うと以下。

“`
/rack-1.6.4/lib/rack/handler/webrick.rb
/webrick/server.r

元記事を表示

Railsチュートリアル第4章

#4.2 文字列とメソッド
##4.2.2 文字列
###演習1
city変数に適当な市区町村を、prefecture変数に適当な都道府県を代入してください。

“`
>> city = “長岡京市”
=> “長岡京市”
>> prefecture
=> “京都府”
“`

###演習2
先ほど作った変数と式展開を使って、「東京都 新宿区」のような住所の文字列を作ってみましょう。出力にはputsを使ってください。

“`
>> puts “#{prefecture} #{city}”
京都府 長岡京市
=> nil
“`

###演習3
上記の文字列の間にある半角スペースをタブに置き換えてみてください。(ヒント: 改行文字と同じで、タブも特殊文字です)

“`
>> puts prefecture + ” ” + city
京都府 長岡京市
=> nil
“`

###演習4
タブに置き換えた文字列を、ダブルクォートからシングルクォートに置き換えてみるとどうなるでしょうか?

“`
>> puts prefecture + ‘ ‘ + city

元記事を表示

【form_for】初めてのselectボックス実装

hamlでのform_for の`selectタグ`実装方法についてです。

**ビューのイメージ**
![Alt text](https://gyazo.com/f136ad29f9a2cf7af056e11ea28ac249/raw)

# `collection_select` か `select`か?
– DBから取得 → f.collection_select タグ
– 自分で配列を定義した場合など → f.select タグ

#基本の構成
“`haml:haml
= f.collection_select :カラム名(プロパティ名), 選択肢の配列, :value属性, :選択肢の表示, {オプション}, {HTMLオプション}
= f.select :カラム名(プロパティ名), 選択肢の配列, {オプション}, {HTMLオプション}
//選択肢を場合に応じて、変更・指定したい時
= f.select :カラム名(プロパティ名), options_for_select(選択肢の配列.map{|c|[表示する値, valueにする値, {追加属性}]}, 初期値のval

元記事を表示

【Rails】acts-as-taggable-on と jQuery で実装!超簡易版サジェスト機能!

# 実装内容
– 投稿された記事をタグ検索できるようにしよう! というのが主な目的。
– gemの`acts-as-taggable-on`を使って、記事を投稿する際にタグもDBに保存する。
(今回はサジェスト機能実装がメインなので詳細は割愛。タグ機能実装については
[Rails | acts-as-taggable-on を使ったタグ機能の実装 | 備忘録](https://qiita.com/ddgg7755/items/e1caa8b73d118822a0a2)と
[Railsのタグ機能の実装(gem:acts-as-taggable-on)]
(https://www.blograils.com/posts/rails-actsastag)を参考にしました)

– jQuery UIを使ってDBに保存しているタグをもとにサジェスト機能を作成。

[![Image from Gyazo](https://i.gyazo.com/0f309c02faf9fa0e5867f81d50163b66.gif)](https://gyazo.com/0f309c02faf9fa0e586

元記事を表示

Missing encryption keyでPrecompiling assets failedなった時やることの全て『2020』| heroku Rails

## ステップ1

仕切り直す。 `credentials.yml.enc` と `master.key`を消す

スクリーンショット 2020-04-19 17.10.49.png

## ステップ2

下記のコマンドをよしなに実行

“`
% EDITOR=”vi” bin/rails credentials:edit
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
% EDITOR=”vi” bin/rails credentials:show
% RAILS_ENV=production bin/rails assets:precompile
“`

## done

“`
% sudo git push heroku ma

元記事を表示

Rails + MySQL + Vue.jsでアプリを作成する➂/簡単な画面を作成する

####※前回:Rails + MySQL + Vue.jsでアプリを作成する②/MySQLの導入
https://qiita.com/tksh8/items/885eb1ca51b32d6ea3a9

## コントローラーの作成

次のコマンドをターミナルで実行してください

“`
$ rails generate controller StaticPages top
“`

## ルーティングの編集

“`ruby:config/routes.rb
Rails.application.routes.draw do
root ‘static_pages#top’
end
“`

## ビューの編集

“`html:app/views/static_pages/top.html.erb

トップページです!!

Hello World!!

“`

## 確認
“`
$ rails s
“`


http://localhost:3000/
にいき、

スクリーンショット 2020-04-1</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Ruby</div>
<div class='tag-cloud-link'>Rails</div>
<div class='tag-cloud-link'>MySQL</div>
<div class='tag-cloud-link'>Vue.js</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/tksh8/items/741cf379da06d8817389'>元記事を表示</a></div>
<h3 id=Rails + MySQL + Vue.jsでアプリを作成する④/Vueの導入

※前回:
####Rails + MySQL + Vue.jsでアプリを作成する②/MySQLの導入
https://qiita.com/tksh8/items/885eb1ca51b32d6ea3a9
####Rails + MySQL + Vue.jsでアプリを作成する➂/簡単な画面を作成する
https://qiita.com/tksh8/items/741cf379da06d8817389

##Vueの導入

“`ruby:Gemfile
gem “webpacker”

を追加する
“`

“`
gemのインストール
$ bundle install
webpackerインストール
$ bin/rails webpacker:install
コンパイル
$ bin/webpack
vueインストール
$ bin/rails webpacker:install:vue
“`

できない場合はこちらを参考にしました。
https://qiita.com/_kanacan_/items/c1499f6c13b1c41da982#bundle-install%E3%

元記事を表示

Rails + MySQL + Vue.jsでアプリを作成する②/MySQLの導入

####※前回:Rails + MySQL + Vue.jsでアプリを作成する①/ローカル環境構築
https://qiita.com/tksh8/items/d9190451d1f01d5a5e19

##MySQLの導入

###1.MySQLのインストール

“`

$ brew install mysql@5.7
“`
インストールが完了したら、パスを通す

“`

$ echo ‘export PATH=”/usr/local/opt/mysql@5.7/bin:$PATH”‘ >> ~/.bash_profile
$ source ~/.bash_profile
“`

インストールされているか確認

“`

$ mysql –version
“`

###2.MySQLの起動

動作の確認です

“`
$ mysql.server start
“`
“`
Starting MySQL
SUCCESS!

となれば成功です。
(停止の場合は
mysql.server stop

“`
###3.mysql2のインストール
mysql2:rai

元記事を表示

yumでRubyをインストールする

## なぜ yumで Rubyをインストールするのか?
Rubyを使った開発経験がある人ならわかると思いますが、yumで Rubyをインストールすることはあまりないと思います (そんなことなかったらすみません。。)

少なくとも私は、新卒未経験からこれまで2年間半ありませんでした。大体は rbenvや ソースコードからコンパイルするのではないでしょうか。

**ではなぜ yumで Rubyをインストールしようとしたのか。**

特に深い意味はなく、[DevOps 導入指南](https://www.amazon.co.jp/DevOps%E5%B0%8E%E5%85%A5%E6%8C%87%E5%8D%97-Infrastructure-Code%E3%81%A7%E3%83%81%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA%E3%83%BB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E9%81%8B%E7%94%A8%E3%82%92%E5%8A%B9%E7%8E%87%E5%8C%96%E3%81%99%E3%82%8B-E

元記事を表示

&:って???

#はじめに

rubyでmapメソッドを利用する際、

“`ruby

number [“1″,”2″,”3”]
number.map &:to_i
#=> [1, 2, 3]

もしくは、、、

alphabet = [“a”,”b”,”c”]
alphabet.map(&:upcase)
#=> [“A”,”B”,”C”]
“`

このような処理がなされているのをみたことがないだろうか。

What is “&:” ???

となったので深堀ってみると面白かったのでここに書き留めておく。

#前提として

“`ruby

alphabet = [“a”,”b”,”c”]
alphabet.map(&:upcase)
#=> [“A”,”B”,”C”]
“`
とは、

“`ruby

alphabet = [“a”,”b”,”c”]
alphabet.map{|s| s.upcase}
#=> [“A”,”B”,”C”]
“`
もっと省略せずに書くと、

“`ruby
alphabet = [“a”,”b”,”c”]
alphabet.map do |s|
s.u

元記事を表示

initializeメソッドとattr_accessorについて

 初学者の私がRubyを学ぶ上でまず躓いたのがattr_accessorやinitializeメソッドだったので自分の中の整理の意味も含めて書いておきたいと思います。

attr_accessorを理解するためにはinitializeメソッドの理解が必要だと思うので先にそちらから書いていきます!因みに今回は例のポケモンを使って説明していきたいと思います。

## 目的
・ポケモン(Pokemon)というクラスを元に基本的な情報であるステータス(名前、体力、攻撃力、防御力)を持つリザードン(lizardon)を生み出す。(何でリザードン?かっこいいからにきm)

## 本編
### 1. クラス設定
まず、クラスの設定を行います。

“`.rb

class Pokemon

end
“`

まずはクラスの定義からですね。ここからリザードンに必要な情報を書いていきます。

### 2. ステータスの設定(セッターの定義)
 リザードンには名前(`name`)、体力(`hp`)、攻撃力(`offense`)、防御力(`defense`)の4つのステータスが存在しますので設定していきまし

元記事を表示

OTHERカテゴリの最新記事