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

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

rbenvでMacのRubyのバージョンを切り替える

ローカルのRuby をバージョンアップする必要があったので備忘録です

# 0. 環境

– macOS Mojave 10.14.6

– Homebrew 2.1.15

# 1. 全体の流れ

macにデフォルトで入っている 2.3.7 から 2.4.1 に変更します

1. Homebrew インストール (省きます)
2. Homebrew でrbenv インストール
3. rbenv で新しいruby をインストール
4. ruby のバージョンを切り替える

# 2. 使用するツール

## Homebrew

macOS用パッケージマネージャー

https://qiita.com/omega999/items/6f65217b81ad3fffe7e6

## rbenv

Ruby 用バージョン管理ツール

https://qiita.com/souichirou/items/d4196faa0df9e4bacf17

# 3. 実際にやってみる

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

“`
brew -v
Homebrew 2.1.15
Homeb

元記事を表示

学習記録#8

#今日やったこと

– progate:RubyⅤの終わりまで
– paiza:スキルチェック入門編1
– paiza:スキルチェック

#####ひとこと
スキルチェック標準入力でちょっと癖があるけど知らないメソッドとかの勉強になる上に楽しい~~!Cランク問題も解いてみたけど意外になんとかなったのでちょっとずつ触っていくようにします。早くオリジナル組めるように頑張ろ~~!!

#####読んだものピックアップ

– [Ruby 標準入力から値を受け取る方法](https://qiita.com/Hayate_0807/items/2e9705091b181a104621)
– [Rubyのmap &:to_iとはなんなのか
](http://a-records.info/ruby-map-ampersand-colon-to_i/)
– [Ruby リファレンスマニュアル](https://docs.ruby-lang.org/ja/latest/doc/index.html)

##

元記事を表示

ActsAsPublishable 作ってみた

公開フラグの立ってるものだけを取るのをうまいこと書きたかったので、[acts_as_paranoid](https://github.com/ActsAsParanoid/acts_as_paranoid)をまねて作ってみた。

`:disabled` はコントローラから有効無効を制御する用。
(↑ユーザー権限が管理者のときは全部出したいなどという目的)

Rails素人にはこれが限界。

“`ruby:ActsAsPublishable
module ActsAsPublishable
thread_mattr_accessor :disabled

module Publishable

def published?
self.published_at.present?
end

def self.included(base)
base.extend ClassMethods
end

module ClassMethods

def published_default_scope

元記事を表示

Railsで開発環境や本番環境毎に定数の値を変更する

開発環境や本番環境などの環境毎に定数の値を変えたいことってありますよね?
そんな時、 `config_for` を使えば良い感じに実装できます!

# まずは定数を定義するファイルを作成
`config` ディレクトリ以下に、環境毎に内容を変えたい定数を定義したファイルを作成します。
YAML形式のファイルとなり、ファイル名は任意です。

“`config/hoge.yml
development:
fuga: 3000
piyo: true
production:
fuga: 1000
piyo: false
“`

# 定義したファイルを読み込み
先程作成した `config/hoge.yml` を `config/application.rb` に追記して読み込みます。
`config.x.hoge = config_for(:hoge).symbolize_keys` という一行を追加します。
`hoge` の部分は先程作成したファイル名と同じものにしてください。

“`config/application.rb
module Bar # module名は

元記事を表示

Ruby文法問題と真剣に向き合ってみた①(値札分割問題)

1ヶ月ぶりの更新です。ふざけたタイトルですみません…
その間、勉強自体はサボっていた訳でなく、文法の勉強は進めていました。
ただ、Qitaに投稿するなら自分の書いた(ダメダメ)PGを発表したいと思いまして、
アウトプット勉強に入ってからまた投稿したいと思っておりました。

ただ、アウトプットってどう進めていけばいいのかな?
良い問題とかないかな~と思っておりましたら、伊藤淳一さんのブログ「give IT a try」で
10問ほど問題を書いて下さっていました。
まずはブログに投稿された問題を使わせていただこうと考えております。
[参考記事](https://blog.jnito.com/entry/2019/05/03/121235)

その中で今回は「値札分割問題」を解きましたので、自分のPGを記載したいと思います。
人によっては笑われるかもですが恥を承知で載せましたので、どうぞよろしくお願いします笑

今回作成したプログラム

“`Ruby:split_price.rb
def split_price(price_text)
if price_text
split

元記事を表示

【Ruby】HTTPClientとLINE Notifyを使ってターミナルから文字列を送るプログラム

# はじめに
**「プログラムとLINEを連携して通知したい」**って思ったことはないでしょうか。

ググると、すぐに**LINE Notify**がヒットし、そのまま登録、APIドキュメントを読むと、`curl`コマンドでターミナルから通知が出来そうだということまではわかります。

でも、Webアプリに組み込むなら**プログラムを書いて実装したい**がなよく分からない…:sob:

そんな思いを持つあなたに役立てばと思います。

今回は**ターミナルで任意の文字列を入力して、自分のLINEに通知するところまでをゴール**としていますが、これを応用すればあとは変数を変えるだけで、**Ruby**を使用したアプリケーションと連携し、通知が出来るようになると思います。

# この記事が役に立つ方
– LINE Notifyを使ってみたい
– HTTPクライアントは`HTTPClient`を使いたい
– Ruby初心者

# この記事のメリット
– LINE Notifyを使ったプログラムの書き方が分かる
– `HTTPClient`の使い方が分かる

# 環境
– macOS Catali

元記事を表示

Rails インクリメンタルサーチの実装

# まえがき
インクリメンタルサーチを実装するにあたって結構な時間を費やしてしまったので備忘録として書きます。実装をしてる方の役に立てると幸いです。
#インクリメンタルサーチとは
どんなサイトにも当たり前のように付いている機能ですが、検索フォームに文字を打ち込んだ際に、enterを押さなくても自動的に結果が表示されるものです。有名なもので言うと、googleの検索欄なんかがインクリメンタルサーチになっています。
#実装の流れ
・ルーティングを設定
・コントローラーにアクションを設定
・jbuilderの作成、記述
・フォームを作成
・発火させるようにjsに記述
・jsに追記
・modelにsearchメソッドを定義
・controllerに追記
・done関数の処理の記述
・非同期通信のビュー作成
・htmlをビュー上に描画

#ルーティングを設定

“`ruby:sample.rb
resources :samples, only: :index
collection do
get ‘search’
end
“`

今回はsearchメソッドをモデルで

元記事を表示

初心者が独学で手を出して失敗したこと

WEB系企業に転職を目指し、独学で学習中です。
やらなければよかった、選択を間違えたという失敗談を記します。
※学習中のため、失敗が増えるたびに更新します。

#PCにコストをかけすぎた(かも)
WEB系ならmacbook!ということで、何はともあれmacbook airをメモリ増設で発注しました。
macという選択肢は良かったのですが、増設により届くまで1週間ほどかかりました。
(届くまでの間はprogateをやっていました)

オーバースペックだったかもしれません。
あと、選ぶのに時間をかけすぎました。

####macならなんでも良かった気がします。

(windowsをベースに解説してある書籍が意外と多いので、人によってはwindows PCでも問題ないかもしれません)

#Rubyから始めたのに、PHPに手を出した
地方在住・年齢(アラフォー)・独学という悪条件があったため、途中でPHPに一旦切り替えましたが、学習の進捗がかなり難航しました。

テキスト選びに失敗したのかもしれませんが、2019年時点ではRubyの方がPHPより「定番」と言われる学習ツールが充実しており、か

元記事を表示

【Ruby】Nokogiriでhtmlのデータをcsvファイルに出力

#概要
アウトプット用に、学習した内容を紹介していきます。
本日はNokogiriというライブラリを用いて、簡単なhtmlからデータをCSVに出力してみようと思います。

#環境
Mac OS Mojave 10.14.6
Ruby 2.5.3
エディタ VSCode
Nokogiri 1.10.5

#htmlで取得したデータをcsvに
以下のhtmlから、rowクラスのtitleとdescriptionを取得してcsvファイルに出力します。

“`html:training.html



タイトル1
解説2
タイト”,ル3
元記事を表示

Slack アプリをRailsで作って公開するまでの流れ

知り合いから「Spotifyで流している曲をSlackのチャンネルに投稿してくれるボットが欲しい!」とリクエストをもらい、実際に作って公開してみました。

社内共有として、例えばユーザー登録があった時に通知を出すようなものは何度か実装してきたのですが、公開アプリとして出すのは初めてでした。公開アプリを出すためには、ただアプリを実装するだけでなく、作ったアプリをSlack App Directoryに申請して審査に通過しなければいけません。ここまでやるのが案外大変で、情報も多くなく正直困りました。

「Slackアプリとは!」という点につきましては、ドキュメントや、[@muky96rockさんの記事](https://qiita.com/munky69rock/items/3342c7b7c642fd2c68f3)で分かりやすく説明してくれているので、実際にRailsでアプリを実装して、審査に提出してApp Directoryに反映されるまで一連の流れを説明していきます!

![qiita.png](https://qiita-image-store.s3.ap-northeast-1

元記事を表示

【Rails】Polymorphic Associationsに少々苦しんだ話

## 1. 環境

* rails 5.2.3
* ruby 2.6.2
* MacOS Version 10.14.6
* 検索フォームgemは `virtus`

## 2. 要件

業務システムの自動メールイベント履歴一覧画面に「名前」(ユーザー名、拠点名)の検索項目を追加。

## 3. テーブル構造

※ 一部カラム割愛、テーブル名・レコードの値を改変

### 3-1. mail_events(メールイベント)

|id |email |
|:–|:——————|
|1 |user@example.com |
|2 |office@example.com |

### 3-2. mail_event_sent_to(メール送信先)

|id |mail_event_id |type |holder_id |office_id |
|:–|:————–|:——–|:———|:———|
|1 |1 |User |1

元記事を表示

Rails gem bcryptの導入

# Userモデルを作る
Database設計

|意味|Column|Type|Options|
|:-:|:—-:|:—:|:—–:|
|名前|name|string|null: false|
|メールアドレス|email|string|null: false, unique: true|
|パスワード|password_digest|string|null: false|

__userモデルを作成する__

“`:ターミナル
$ rails g model user name:string email:string password_digest:string
invoke active_record
create db/migrate/xxxxxxxxxxxx_create_users.rb
create app/models/user.rb
“`
# migrationファイルの編集
“`ruby:db/migrate/xxxxxxxxx_create_users.rb
class CreateUsers

元記事を表示

【Rails】Ruby on Railsで時間を15分単位で丸める、区切る【初心者メモ】

# rounding gemを使う

“`ruby:Gemfile
gem ‘rounding’
“`
“`
bundle install
“`

“`
Time.current
# => Wed, 13 Nov 2019 15:31:30 JST +09:00

Time.current.floor_to(15.minutes)
# => Wed, 13 Nov 2019 15:30:00 JST +09:00
“`
floor_to無し
Wed, 13 Nov 2019 15:31:30 JST +09:00

floor_to有り
Wed, 13 Nov 2019 15:30:00 JST +09:00

00分、15分、30分、45分で区切られて、はみ出した分は切り捨てられる。
上記は31分30秒の30分以降が切り捨てられて、30分00秒になる。

15.minutesの部分を変えれば、好きな時間単位で丸められる。
例えば、10.minutesにすれば10分区切りに

元記事を表示

#Ruby or #Rails で Date の月同士を比較計算したいのだが?

愚直に頑張るしかないのかもしれない。

“`
(date2.year * 12 + date2.month) – (date1.year * 12 + date1.month)
“`

[Find number of months between two Dates in Ruby on Rails – Stack Overflow](https://stackoverflow.com/questions/9428605/find-number-of-months-between-two-dates-in-ruby-on-rails)

# Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/2712

元記事を表示

Rubyのクラスとインスタンス

一番大事な、クラスとインスタンスについて、イメージで掴む部分は割愛(笑)

“`
# クラス定義 先頭文字は、ローマ字大文字で
class Aaa
###
end
“`
“`
# インスタンス生成 new
bbb = Aaa.new
# メソッドnewは定義せずとも全てのクラスに実装されている
“`
“`
# インスタンスメソッド
# class定義の中に通常通りメソッド定義する
# インスタンス毎の個別の情報を使った処理に使用する
# インスタンスに.をつけて呼び出す
class Aaa
def bbb
###
end
end

ccc = Aaa.new
ccc.bbb
“`
“`
# インスタンス変数
# インスタンスメソッド中に、@をつけて定義する
class Aaa
def bbb
@ddd = 1
end
end
“`
“`
# クラスメソッド
# class定義の中に、メソッド名の前にself.をつけてメソッド定義する。
# クラスで共通の情報を使った処理に使用する
# インスタンス定義時に呼んでいるnewが

元記事を表示

RubyでOpenCVを動かす方法(2019年11月)

画像解析をしたい。ruby+OpenCVでやってみる。
環境はmac (Catalina)。まずはローカルで動かす。

## 参考リンク

RubyとOpenCVで始める画像処理

https://qiita.com/thomi40/items/0ab8c1d155e5c37db997

## 前提
結構バージョンの指定が重要でした、以下のバージョンでインストールします。

– openCV = 2系(2.4.3)
– Ruby = 2.5系(2.6だとruy-onecvのgemインストールで失敗する。)
– ruby-opencv(0.18)

## OpenCVのインストール

“`
brew update
brew install -v cmake
brew install opencv@2 #現在の最新のv4やv3はgemが対応していないので、v2を入れ

元記事を表示

Rubyの復習

“`
# 画面表示 puts
puts “aaa”
# aaa
“`
“`
# 文字連結 +
puts “aaa” + “bbb”
# aaabbb
“`
“`
# 文字数 length
puts “aaa”.length
# 3
“`
“`
# 数値⇨文字列 to_s
puts “aaa” + 3.to_s + “bbb”
# aaa3bbb
“`
“`
# ローカル変数定義は、ローマ字小文字始まりで。
abc = 3
aB_c = 1
abc += aB_c
puts abc + aB_c
# 5
“`
“`
# 定数定義は、ローマ字大文字始まりで。
PI = 3.14
“`
エスケープ文字
\n 改行
\t タブ
バックスラッシュは、option + ¥ で入力

“`
# 文字列中に変数入力 #{}
abc = “777”
puts “seven#{abc}”
# seven777
“`
“`
# 入力受付 gets
puts “今日は” + gets
11/13
# 今日は11/13
“`
“`
# 「末尾」の

元記事を表示

【超基礎】Rails環境構築とよくでてくる用語

先日Railsの環境構築をしたところ、「???」となる用語が多く、大変時間がかかってしまいました。自分用のメモも兼ねて、Rails環境構築関連用語の説明をします。
間違いなどあれば、お手柔らかにお教えていただけると嬉しいです。

記事構成としては、Railsインストール時の概要を載せたあとに、詳しい用語の説明をし、最後にインストールの詳細手順を見ていきます。
#Railsことはじめ 〜大まかな手順〜 
Homebrewをインストール

rbenvをインストール+パスを通す

Rubyをインストール

Bundlerをインストール

Railsをインストール

おおかたこういった流れではないでしょうか。

#「???」
(RubyとRailsの説明ははぶきます)

##Homebrewってなんですか

Homebrew:MacOS用のパッケージ管理システム。パッケージの依存関係も管理してくれる万能屋さんです。

###(こまかい用語)
 ・パッケージ管理システム:パッケージをインストールしたり、アンインストールしたり、バージョンの管理ができるシステム

 ・依存関係:パッケージA

元記事を表示

【その6〜http→httpsへSSL化編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

【その5〜ドメイン設定編〜】AWS(EC2)にRailsアプリをイチから上げる方法【画像付きで丁寧に解説】

#AWSにRailsアプリをイチから上げるシリーズ 項目表
|No|タイトル|
|:—|:—|
|その1|[ネットワーク、データベース設定編](https://qiita.com/Yuki_Nagaoka/items/975b7598806d6ae0c0b2)|
|その2|[EC2設定編](https://qiita.com/Yuki_Nagaoka/items/5be084c6efe1f797fd94)|
|その3|[サーバー設定、Railsアプリ配置編](https://qiita.com/Yuki_Nagaoka/items/dbb185feb6d4f051c2f2)|
|その4|[Railsアプリの公開編](https://qiita.com/Yuki_Nagaoka/items/1f0b814e52e603613556)|
|その5|[ドメイン設定編](https://qiita.com/Yuki_Nagaoka/items/3020f02d3fd74c8572a0)|
|その6|[http→httpsへSSL化編](https://qiita.com/Yuki_Na

元記事を表示

OTHERカテゴリの最新記事