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

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

【解決】(macOS:Catalina) An error occurred while installing nokogiri (1.10.5), and Bundler cannot continue. Make sure that `gem install nokogiri -v ‘1.10.5’ –source ‘https://rubygems.org/’` succeeds before bundling.

## macOSをCatalinaにアップデートしたらbundle install で下記のエラー

“`
MacBook-Pro-4:owntask jun$ bundle
Your Gemfile lists the gem selenium-webdriver (>= 0) more than once.
You should probably keep only one of them.
Remove any duplicate entries and specify the gem only once (per group).
While it’s not a problem now, it could cause errors if you change the version of one of them later.
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for r

元記事を表示

splitで文字列を分割? ❏Ruby❏

`splitメソッド`を使うと文字列を分割できます。

`split(“区切りたい文字”)`でその文字で区切ったものが配列に入れられます。

実際に見てみましょう。

“`ruby:sample.rb
str = “manbow,manbow2,manbow3”
ary = str.split(“,”)
puts ary[1]
“`

【結果】
`manbow2`

【解説】
2行目でstrをカンマ(,)で区切って配列にします。

実際のaryの中身は、
ary = [nambow,manbow2,manbow3]となります。

3行目で配列の2番目を取ってくるので、結果は`manbow2`になります。

`split(” “)`でスペース区切りとかも使えそうですね!

ではまた!

元記事を表示

activerecord-multi-tenant で delete できなかったのでコードリーディングした

この記事は [SmartHR Advent Calendar 2019 20日目](https://qiita.com/advent-calendar/2019/smarthr)の記事です。

こんにちは、SmartHR でバックエンドエンジニアをやっている kouryou です。
今回は、SmartHR で利用されている [activerecord-multi-tenant](https://github.com/citusdata/activerecord-multi-tenant) という gem で予想外の挙動にハマったため、気になってコードリーディングした話を書きたいと思います。
ちなみにコードリーディングした話を選んだ経緯としては、[メタプログラミングRuby](https://www.amazon.co.jp/%E3%83%A1%E3%82%BF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0Ruby-%E7%AC%AC2%E7%89%88-Paolo-Perrotta/dp/487311743

元記事を表示

RailsアプリをECS FargateへデプロイするCI/CD pipelineを構築する

この記事は[Fusic Advent Calendar 2019](https://qiita.com/advent-calendar/2019/fusic)の20日目の記事です。

昨日は@Kta-Mの「[究極のCloudFormationをたずねて三千里](https://qiita.com/Kta-M/items/53bfd638eae21b76250f)」でした。
CloudFormationでこのネタをやるとは、、、斬新なアイディアですね。

—-
さて、12月2日〜6日にアメリカのラスベガスで[AWS re:Invent 2019](http://reinvent.awseventsjapan.com/)が開催されました。
私自身も参加して多数のWorkshopを体験することができました。

今回は、その中で最も実用的と感じたWorkshopの内容を、一部アレンジしてre:Playします。

## 作るもの

ECS Fargate上にアプリケーションをデプロイするCI/CD pipelineを構築します。
ECSは2つのサービスを起動し、Blue/Greenデプロイで

元記事を表示

RubyのFileについてまとめました。

Ruby技術者認定試験(シルバー)をとるうえで若干おろそかになりがちだけど、しっかり点数を稼いでいきたいFileについてまとめてみました。

基本的に抑えておきたいのはまずこの6つの使い分け

– w :書き込みモード。既存のファイルがあるときはファイルの中身を空にする
– w+ :読み書きモード。既存のファイルの中身は空になる。
– r :読み込みモード。
– r+ :読み書きモード。ファイルの読み込みと書き込みの位置は文の先頭から。
– a :追記モード。既存のファイルの文末に入力内容を追記する。
– a+ :読み書きモード。ファイルの読み込み位置は先頭に、書き込み位置は常に末尾になる

まずはwモード、aモード、rモード から
##ファイル作成
ファイルを作成するのに使うのはwモード、aモードの書き込みモードのみ
またFile.open、File.newどちらも利用できる

“`ruby
file = File.open(“nyan_by_w.txt”,”w”)
=> #
#ファイルが実在するか確認
File.exist?(“nyan

元記事を表示

[WIP]ActiveRecordを使って複数テーブルへBULK INSERTする方法

# 目的
– Qiitaの記事に大まかな流れをテンプレート化しておき、作業効率を上げる。
– 今後、railsを学ぶ方に向けての参考に役立てる。

# 前提条件
– 実行環境
– Ruby 2.5.1
– Rails 5.2.3
– MySQL 5.7

– gem
– [activerecord-import](https://github.com/zdennis/activerecord-import)

– 想定
– 大量のデータ(CSVファイル)をseedで一括で取り込みたい

# 手順
1. CSVファイルを設置する
2. seeds.rbにCSVをBULK INSERTするコードを記述
3. 各modelにオプションを設定
4. `rails db:seed`(完)

## 1. CSVファイルを設置する

“`tex
db
├── data
│   ├── hoge.csv ← 初期データとして取込みたいCSVファイルを設置
│   └── fuga.csv ← 初期データとして取込みたいCSVファイルを設置
├── m

元記事を表示

Rspecつまづきポイント!

この記事は[Ateam Hikkoshi Samurai Inc. & Ateam Connect Inc. Advent Calendar 2019](https://qiita.com/advent-calendar/2019/hikkoshi) 20日目の記事です。

# はじめに
ここ一年ほど、社内で自動テスト推進係をしております@ysysysysがお送りいたします。
社内の各プロジェクト、特にRailsプロジェクトでRspecを書きましょうと皆さんとともに日々頑張っております。
今回はRspecを書いていく中で個人的につまづきポイントだったなと思うところをいくつかピックアップしてその対応をご紹介しようかと思います。

# その1 let と let!
Rspecではletという機能があります。Spec内ではインスタンス変数で定義するよりもlet(:hoge)と定義するのが一般的なようです。
letをつかえば、その内容はメモリーされ、exampleのたびに再生成するコストが減るとのこと。
ここでつまづいたのが、このletが**遅延評価**するという特性による挙動です。

“`

元記事を表示

ド素人が超簡単なwebアプリ作ってみた2。

# 第2段はRailsで
今年10月の半ばに完成。第一弾がから数ヶ月。細く長く学んできました。
見てくれしょぼくてもこれ引っさげて現在転職活動中。
ポートフォリオは有効と聞いたが未経験での転職だとそもそも見られない事が多いね。意欲は認めてくれる。やっぱ職歴が全てってかんじ。

#何するアプリ?
普段業務でLPのコラム書いたりするのでテキストと画像を投稿するだけのシンプルなアプリ。

#実装機能
・記事投稿、記事更新、記事削除機能
・ユーザー作成、更新機能
・検索、ソート機能

#技術スタック
・Webフレームワーク:Ruby on Rails、Bootstrap4
・PaaS:heloku

#見どころ
ログイン機能はGem使わずに実装しました。

#URL 
・デプロイ先
https://crudsample20190928.herokuapp.com/

・Githubのリポジトリ 
https://github.com/rrrhtm/curdsample

#おわりに
言語やフレームワークにこだわらないで色々面接受けていこうと思う。
未経験者の戦闘力がインフレしているらしいので不

元記事を表示

Ruby 学習アウトプット2

###はじめに
初学者のrubyシルバー取得に向けての学習アウトプットです。
文章もただただ、タコ殴りしてるだけなので、温かい目で見守っていただけると幸いです。

##今回の教材
###REx

REX??恐竜???
T-REXっていうバンドもいますよね。

否!!

[https://www.ruby.or.jp/ja/certification/examination/rex](https://www.ruby.or.jp/ja/certification/examination/rex)

受ける度に問題の内容が変わります。8割共通で残りの2割が入れ替わる。
もちろん以前の問題を再び受け直すことも可能。解説も割と書いてある。
スマホからも受けられて便利。そして無料。
githubアカウントとの連携が必要。

####やってみて
100点中、52点。。。。。まだ先は長い。
ということで復習しましょう

####復習(復讐)

* 次のコードのXXXXに記述するとエラーが発生するコードはどれですか?

“`ruby

puts XXXX

“0x90”.hex #=>144

元記事を表示

これから学ぶ言語についてのまとめ

#これから学ぶ言語について

**これからプログラミングを学ぶにあたり、HTML,CSS,Javascript,Ruby,Ruby on Railsの5つの言語について調べてみました。**
(間違いがございましたらご指摘頂けますと幸いです!)

##HTML
**Hyper Text Markup Language(ハイパーテキスト・マークアップ・ランゲージ)**

– Webページを作るための最も基本的な**マークアップ言語**のひとつです。

– Webページの文書構造を形作るための言語で、普段観ているWebページのほとんどが、HTMLで作られています。

– Hyper Text(ハイパーテキスト)とは、ハイパーリンクを埋め込むことができる高機能なテキストです。 

– HTMLにはハイパーリンク機能で関連する情報同士を結びつけて情報を整理するという特徴があります。

– Markup(マークアップ)とは文書の各部分が、どのような役割を持っているのかを示すということです。

– コンピュータに理解できるように文書の構造を定義することが、HTMLの最も重要な役割で、
この際目印を

元記事を表示

配列とハッシュ

# 配列とハッシュ
日々のRubyの学習で学んだことを備忘録としてつぶやいていきます。

## 配列

### 配列とは?
通常の変数を1つの箱と捉えれば、配列は、仕切りがある箱のようなもの。
配列を用いることで1つの変数で複数の値を管理することができる。
配列は、要素を**順番で管理**する。
◯番目といった順番を表す数字のことを**インデックス**と言う。

**インデックスは0番目から始めることに注意!!**

### 配列の書き方

“`ary.rb
ary = [“10″,”20″,”30”]
# 3つの値を1つの変数に格納している
“`

## ハッシュ

### ハッシュとは?
ハッシュも配列と同じで、複数の値を一括で管理したいときに使われる。
配列は、順番で管理していたことに対し、ハッシュは、名前で管理することができる。
ハッシュとは、**キー名: 値**の形式で値を取ってくることができる。

### ハッシュの書き方

“`hash.rb
hash = {name: “reo”, age: 20, country: “japan”}
# キー名:

元記事を表示

RailsロガーからStackdriverに切り替える

# はじめに

* **当該記事はたたき台のため、追記予定**

### システム情報
* Ruby 2.6.5
* Rails 5.2.3
* bundler 1.17.2
* puma
* rbenv local環境下

“`text:Terminal
$ rbenv versions
system
2.4.1
* 2.6.5 (set by /Users/%user%/%repository%/.ruby-version)
$ bundle exec rails -v
Rails 5.2.3
“`

# Stackdriverに切り替える

## これまでの構成

* Rails.loggerのformatterを `config gem` で環境毎に設定(或いは `settings.yml` でも良い)

“`yaml:config/settings/development.yml
…途中省略…
# logging setting
# fatal システムクラッシュ(システムエラー)
# error アプリケーションエラー
# warn 警告
# i

元記事を表示

俺たちは雰囲気でAdminLTEを使っている

# はじめに

※この記事は、「RUNTEQ Advent Calendar 2019」、19日目の記事です。

普段、Webサービス・アプリのUIデザインを仕事としてやっているのですが、管理画面の制作は、エンジニアの誰かが良しなに対応してくれているだけという状況がかなり多いです。

社内のRailsエンジニアと話していたときに、「AdminLTEなんかもっといい感じに使えたいんだよね」というお悩み相談を受けたことがあります。
今回は、AdminLTEを使用する際に持っていると助かりそうな知識と、ちょっとしたテクニックをまとめてみました。

デザイナーがいないプロジェクトでも、CSSフレームワーク等を用いてせっせと管理画面をつくってくれている、最高のエンジニアの方々のお役に立てたら最高です。

# AdminLTEとはなにか

AdminLTEは、Bootstrapベースでつくられた、管理画面作成などに特化したCSSフレームワークです。
これから使うならバージョン3以降がおすすめです。

骨組みはBootstrapで、それにスタイリングを加えて、サンプルも提供してくれているものがAdm

元記事を表示

simple_formのhtmlエスケープを制御する方法

# 文字列としてviewファイルに書かれないsimpl_formのhtmlエスケープを制御したい

Rails 5.2.0
ruby 2.5.1

## やりたかったこと

simple_formのチェックボックス、ラジオボックス、セレクトボックスなどのラベルの表示に、**改行を反映させたかった**

「文字列としてviewファイルに書かれない」とは、以下のようなものです

`<%= f.input :value, as: :check_boxes, collection: recruitment_field_options, label_method: :label, value_method: :code, checked: f.object.check_boxes_value, label: '' %>`

この場合、チェックボックスのラベルとして表示されるのは、recruitment_field_optionsテーブルのlabelカラムです。

## 詰まったこと

Rails3以降は、ビューで表示される変数は全てデフォルトでエスケープ処理されます

◆文字列に対してhtmlエ

元記事を表示

エンティティについて

# エンティティ

###エンティティとは
– エンティティとは、共通項を持ったデータの集合体
– データの対象を抽象的に捉える。
– 属性とインスタンスを持っている。
– 簡単に言うとER図の箱のこと
– サービスで扱う情報のこと

###(例)車をWeb上で販売するアプリ
  物理的なエンティティ 社員・店舗・車、顧客など
  概念的なエンティティ 購入履歴・進捗状況など

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/510019/c2ef9563-8424-7948-83eb-cdd1ae87f2e3.png)

###エンティティの属性
エンティティの属性とはエンティティが持つ個別の情報のことをいう
車のエンティティの属性は価格、色、大きさ
顧客のエンティティの属性は 名前、年齢、性別

##memo
– エンティティはDB設計する上で大切な情報。
– DB設計するときは、粒度の大きなエンティティから作成していくといい。

## 参考
https:

元記事を表示

ruby match,gsub正規表現

#正規表現入門

##match

matchは変数の中に特定の文字があるかどうかを判断してくれる。

“`
name = ‘tarou’
name.match(/t/)
=> #
“`
このように//で囲った文字の有無を確認できる。

//の中の指定方法も様々で

“`
name.match(/[a-z]/)
“`

アルファベットのa~zにある文字が入っているのかどうかを確認できる。
ただし小文字のa~zのみの検出になるので

“`
name.macth(/[a-z]/i)
“`

とすると大文字、小文字の区別をなくせる。

[0-9]とすれば0~9の数字を検出できます。

webサービスよく使われているものとしては

“`
e_mail_address = ‘tarou@gmail.com’
e_mail_address.match(/@.+/)
=> #
#’.’はどの文字列でも1文字マッチ、’+’は+の前にある文字列に1文字以上続きがあるかを指定。
“`
これで入力されたメールアドレ

元記事を表示

Rubyのお型付け!Sorbetを試してみた

[Ateam cyma Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-cyma)、20日目です!いよいよ終盤ですね!
本日は [株式会社エイチーム](https://www.a-tm.co.jp/) のねぼすけエンジニア [@NamedPython](https://qiita.com/NamedPython) がお送りします!

さて、タイトルで「お?Rubyに型?」と思ったあなた!そう、ついにRubyにも型の時代がやってこようとしているのです!
今日は、[RubyKaigi2019](https://rubykaigi.org/2019/)にて[Stripe社](https://stripe.com/jp)から発表があったオープンソースの**Ruby向け型チェッカー**である[**Sorbet**](https://sorbet.org/)?をふんわり紹介します!

![Sorbet logo](https://github.com/sorbet/sorbet/raw/master/docs/l

元記事を表示

○witterもどきのアプリでハッシュタグ機能を実装してみた。

##はじめに
どうも、Pirikaraです。
今回は適当に作った○witterもどきのアプリで、ハッシュタグ機能を実装してみたので共有したいと思います。

##まずはrails new
まずはT○itterもどきのアプリを作ります。
tag機能を実装するので、rails newでtag_appを作ります(適当)

tweetモデルとtagモデルを作成しますが、
両者は多対多の関係なので、中間テーブルとしてtweet_tagモデルも作っておきます。

“`ruby:tweet.rb
class Tweet < ApplicationRecord has_many :tweet_tags has_many :tags, through: :tweet_tags #写真の投稿も可能にするために、carrierwaveとminimagickを入れておいた mount_uploader :image, ImageUploader end ``` ```ruby:tag.rb class Tag < ApplicationRecord has_many :tweet_tag

元記事を表示

Protocol Buffers を使って、Rails の RESTful API をスキーマ駆動開発してみた

こんにちは、クラウドワークスの @t0yohei です。普段は Rails や Vue.js などを使って crowdworks.jp の開発をしています。
この記事は クラウドワークス Advent Calendar 2019 の20日目の記事です。

昨日は @juntetsu_tei による、[Rails更新は最低限Controllerのテストが欲しいというお話](https://qiita.com/juntetsu_tei/items/3bf793ae84191b86d6ac)でした。

今回は、Protocol Buffers を使った、 Rails の RESTful API はこんな感じに開発できるんじゃない?って内容です。実務で実際に使ったわけではないので、不足している点があると思いますが悪しからず。

## 用語の整理
### Protocol Buffers って?
Google が社内向けに開発を始めたツールです。2008年以降 OSS として公開されており、誰でも閲覧、 contribute することができます。https://github.com/protoc

元記事を表示

未経験者が入社1カ月間で必死に読んだ課題図書6冊

今年の11月1日に、未経験でマイナビのサーバサイドエンジニアとして中途入社しました。
最初の1ヶ月間は、上司から課題図書を指定してもらい、それをひたすらインプットしていたので、そのまとめをここに記したいと思います。
尚、私の所属しているチームではRuby on Railsを利用しています。

## 1冊目:「アジャイルソフトウェア開発の奥義」
![Amazon](https://images-na.ssl-images-amazon.com/images/I/51-dAD2L2gL._SX391_BO1,204,203,200_.jpg)
(https://www.amazon.co.jp/dp/4797347783/ref=cm_sw_r_tw_dp_U_x_4.I5DbA81G4XN)

### 内容
#### 単一責任の原則
– クラスを変更する理由は一つ以上存在してはならない。クラスには1つの責務のみを負わせる。2つ以上の変更理由があるということは、そのクラスは2つ以上の責務を持っていることと同義である。

#### オープン・クローズドの原則
– ソフトウェアの構成要素(クラ

元記事を表示

OTHERカテゴリの最新記事