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

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

ActiveRecord::Type::Boolean#cast の返り値について

API などでクライアント側から渡ってきた `”true”`、`”false”`、`1`、`0` などの値を、 Ruby の `true` や `false` として扱いたいときがある。
Ruby では `false` と `nil` 以外の値はすべて `true` として扱われるため、`!!` を先頭につけたとしても実現できない。

“`rb
!!nil #=> false
!!0 #=> true
!!’false’ #=> true
“`

そのようなときには `ActiveRecord::Type::Boolean#cast` を使う。

“`rb
ActiveRecord::Type::Boolean.new.cast “true” #=> true
ActiveRecord::Type::Boolean.new.cast 0 #=> false
“`

しかしながら、どんな値でも `true` か `false` にしてくれるわけではない。

“`rb
ActiveRecord::Type::Boolean.new.cast nil #=> nil
Ac

元記事を表示

Rubyで九九表を作ってみた

今回は、もう少し基礎に返って九九表を生成してみた。

##仕様要件
・テーブルになるようにする。横幅はどこのセルも同じ大きさにする。
・縦横の見出しはなし。そのまま値が表になっているものをつくる。

##実際に書いてみた
“`ruby:table_of_tables_99.rb

# Cell setting
x_line = 9
y_line = 9
size = (x_line * y_line).to_s.size

puts (“+” + “-” * size) * y_line + “+”

# Y line is output
(1..y_line).each do |y|

# X line is output
(1..x_line).each do |x|
print “|%#{size}d” % (x * y)
end
puts “|\n” + (“+” + “-” * size) * y_line + “+”

end

exit
“`

##ソースコードで使ったもの
後々まとめる。
・一行で線を繰り返す
・ループ文の中にループを組み込む
・prin

元記事を表示

bundle installでmysql2が入らないときの対策コマンド

## ◆現象
bundle installをすると次のようなエラーが出てmysql2が上手く入らない。

“`
〜省略〜
current directory: /Users/hogehoge/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/mysql2-0.5.2/ext/mysql2
make “DESTDIR=”
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

元記事を表示

Rails でのCSS設計、FLOCSS+ルールでViewをコンポーネント化した

# FLOCSS概要
FLOCSS については、Qiitaなど各所の記事を参照しました。
簡単に概要を書くと、CSSをレイヤーで分けて、

– Foundation
– Layout
– Object
– Component
– Project
– Utility

にて管理することを指しています。
そのPrefixをとって、FLOなCSSで、FLOCSS(フロックス)です。

Object をどう分けるのか?は悩むところです。
[脱・CSS無法地帯。FLOCSSで指針のある設計を。](https://qiita.com/sueshin/items/dcbaf3d8a0adb6b087db)や[FLOCSSを使ったCSS設計での悩みどころと解決案](https://qiita.com/uggds/items/d904b2f9a103c37a25fa)が参考になりました。

## 階層
FLOCSS そのままに、

“`
– foundation
– layout
– object
– component
– project
– utility
`

元記事を表示

Angularから@ngrx/dataとActiveRecordを使ってRDBにアクセスする

# 1 はじめに

この記事は [Angular #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/angular-2) 6日目の記事です。

 スターアプリケーションズ株式会社の吉田文雄です。Angularからデータベースにアクセスする話だと、FirebaseとかGraphQLの話題が多いようですが、昨今NoSQLからRDBに回帰する動きもあり、リレーショナルデータベースに挑戦してみました。ただ、AngularからSQL文をゴリゴリ書くのは、少しつらいところもあり、ActiveRecordを挟む構成とします。また2019年の夏に、リアクティブプログラミングのNgRx8.0がリリースされた際、@ngrx/dataというモジュールも一緒にリリースされました。この機能を使うことによりデータを一方向で流すパターンを、簡単に作れるようになりました。また、当初はRDBのCRUDのみを考えていたのですが、せっかくRDBを使うのですから、Join、トランザクションも頑張ってみました。本記事の後半にあります。

##

元記事を表示

次世代コンテンツビジネス

![Global.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19772/d2a7aae8-a857-497a-0391-3651f8b1d7df.png)
![JFLABO_NA2C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19772/16ceb233-702b-149f-4c2d-8d2804a3225a.png)
![picture_pc_a1efb4ee20fcf9047c458c38b674e494.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19772/08e05aed-59dc-042d-b014-5873d7a8e698.png)

元記事を表示

Hack U SFC 2019でSNS作った

# はじめに
[SFCアドベントカレンダー](https://qiita.com/advent-calendar/2019/sfc)の6日目を担当するしゅんた[@____reiwa___](https://twitter.com/____reiwa___)です!
今、この記事を書いてるのは12/6ですが、なんか書くって書いておいてずっとなに書こうか迷っていたので **~~だいぶやばいです~~ 間に合いました(記事完成したのは)。**

# Hack U SFCとは
今年の秋学期のインターネットの授業履修者(履修者じゃなくても参加可能)を対象にした、Yahooが開催しているハッカソンです。
https://hacku.yahoo.co.jp/sfc2019/
今回はこちらのハッカソンで炎上を防止するSNSを作成し、見事最優秀賞を頂くことができました?

# 作成したもの
炎上を防ぐSNSです。作成したものは、TwitterのようなSNSで、投稿にいいね、わるいねの評価を与えれる仕組みを作成しました。
わるいねをすると、対象の投稿の評価とその投稿をしたユーザの評価を下げ、評価が一定程度落ち

元記事を表示

初学者がDocker on Railsで開発したアプリをAWS EC2にデプロイする際につまづいたこと

# はじめに
私はプログラミングを半年弱ほど独学している者です。
今回、Rails + Dockerで開発したアプリケーションをAWS EC2にデプロイするところでつまづき、まる一週間を浪費してしまいました。
この記事が、同じようにつまづいている方の一助となれれば幸いです。

また、今回作成したアプリケーションのソースコードは以下のURLからご覧いただけますので、良いコードではございませんが参考にできそうな部分があれば、参考にしてみてください。

https://github.com/aiirononeko/GoodCoffeeByGoodBarista

# ①production環境で動作する設定にしていなかった
基本中の基本すぎて笑えてきます…笑
いや、笑えません…。
実際production環境で動作するように設定をしておらず、この一週間を溶かしたと言っても過言ではありません。
一番最初にデプロイしたときは、productiond環境で立ち上がってすらおらず、RDSとの連携ができなくてつまづいてました。

Docker on Railsで開発したアプリケーションをpro

元記事を表示

fluentd の record_transformer でログにプライベートIPを含める

## 概要
fluentdを利用して複数のEC2インスタンスからCloudWatch Logsにログを転送する際にプライベートIPを含めたいケースがあり、fluentdの標準Filterプラグインで実現しました

## record_transformer でログにプライベートIPを含める

### record_transformer
record_transformerは標準のFilterプラグインで、条件に一致したログへのフィールドの追加や編集ができます

– https://docs.fluentd.org/filter/record_transformer

### プライベートIPアドレスの取得
フィールドの追加時に値としてRubyの式展開を含めた文字列を指定することが可能です
下記のようにプライベートIPの取得を行い、フィールドの追加を行うことができます

“`conf

@type record_transformer

private_ip “#{(Socket.ip_address_list.find

元記事を表示

Rubyでも nCk を計算したい!(組み合わせ/繰り返し二乗法/逆元)

## TL;DR
Rubyで競プロやってる人向けです(悪いことは言わないので早くLLを卒業しろ)
ググってもRubyで書いてる記事パッと出てこなくて困ったので仕方なく自分で書きました。

ソースコード

– 素数MOD下で
– 逆元の計算
– 階乗計算
– nCrの計算

“`ruby
MOD = (10**9) + 7 # い つ も の
ONE = ‘1’.freeze

# コンビネーションの計算
def nCk(n, k)
(fact(k + 1, n) * inv(fact(1, n – k) % MOD)) % MOD
end

# 階乗の計算
def fact(s, e)
(s..e).reduce(1) { |r, i| (r * i) % MOD }
end

# MOD下での逆元の計算
def inv(x)
res = 1 # 逆元をどんどんかけるやつ
beki = x # 逆元を計算したい値のMOD化でのべき乗
(MOD – 2).to_s(2).reverse.

元記事を表示

RubyでDBMSを実装 揮発性DB(4日目)

この記事は [RubyでDBMS Advent Calendar 2019](https://qiita.com/advent-calendar/2019/rbdb) の4日目の記事です。

# 本日の概要

[3日目](https://qiita.com/gtnao0219/items/2548b299663c31e02a79)は構文解析を実装し、サーバに渡ってきたSQLを一通り解析することができるようになりました。
(簡単なSELECT,CREATE,INSERTのみ)
本日は、永続化することは一旦置いておいて、クエリを叩いて結果が返ってくるところまで実装します。

実装は[こちら](https://github.com/gtnao0219/rbdb-ac/tree/master/day04)のGitHubリポジトリに置いてあります。

# 実装

## 保存部分

SELECT, CREATE, INSERTを動作させるためには、
CREATE文で定義したテーブルのスキーマと
INSERT文で挿入したレコードを保存しておく必要があります。

本日は永続化を考えず、メモリ上で保存さ

元記事を表示

Ruby Silver&Gold合格したときの勉強方法まとめ

#概要
昨年の10月にRuby技術者認定試験Silver、今年の3月にGoldを受験して合格しました。
それぞれ無事一発合格してきた際に残してたメモを、今更ながら公開します。
これから受験する方の参考になれば。

Ruby技術者認定試験については[こちら](https://www.ruby.or.jp/ja/certification/examination/)。

###書いてる人の受験前スペック
– 社会人歴=Ruby歴=3年。Ruby(Rails)やJS中心に開発してるWebエンジニア
– 学生時代にCやJava、PHP、Pythonなど一通り触ってきた、情報系学科出身
– その割にオブジェクト指向の理解はふわっとしたまま過ごしてきた。

#受験結果
RubySilverは86点、RubyGoldは84点で合格しました。
資格受験用の勉強はそれぞれ二週間ほどです(業務でRubyは使ってるので、あくまで資格対策の期間)。

#勉強方法

諸事情により資格を早く取りたかったので、『資格を取る』を優先した勉強方法をとってました。1日の勉強時間は2-3hくらい。

### まずググる

元記事を表示

【Rails】Rails⇔JavaScript間で時間データを渡す方法

## 【はじめに】
先日、こちらの記事を書きました。
[【Rails】Rails側で定義した変数をJavaScriptに簡単に渡せるgem 「gon」を使ってみた – Qiita](https://qiita.com/terufumi1122/items/943241581a4a21826af5)

ただ、時間関係の変数については**フォーマット**がRubyとJavaScriptで異なってしまい、うまく動きません。

そこでRails⇔JavaScript間で**時間データを渡す変換方法**を調べたのでまとめてみました:relaxed:

## 【この記事が役に立つ方】
– Rails⇔JavaScript間で時間データをやりとりしたい方

## 【この記事のメリット】
– Rails⇔JavaScript間で時間データをやりとり出来るようになる。

## 【環境】
– macOS Catalina 10.15.1
– zsh: 5.7.1
– Ruby: 2.6.5
– Rails: 5.2.4

## 【ポイント】
### **1000を掛ける、割る**で調整する。


#

元記事を表示

現場で役に立つ!最小限の修正で仕様変更に対応する方法(Ruby)

この記事は [Ruby Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ruby/) 第6日目の記事です。

時間がないのにどうしても仕様変更しなくてはならないとき、どんな考え方で対応しますか?ってお話です。

# はじめに

この記事では、主に大規模Webアプリケーションの開発に於いて、新規開発ではなく修正や拡張を行うシーンを想定して、無駄な工数をなるべく削減すべく自分なりに考えて実践しているベストプラクティスを書いている。

要は、時間優先で修正にあたるとき、実際に自分が頭の中で考えていることを分かりやすく書いた、みたいな内容だ。

また、紹介するコードはRubyに特化したものになっているが、概念としては特定のプログラミング言語に依存しない、考え方そのものについて書いているつもりだ。

## 対象とする読者層

対象とする読者は、プログラミング経験1年以上、設計工程よりも実装工程をメインに担当していて、コーディングしてテストしての毎日に追われている若手プログラマ、オブジェクト指向の言葉は知ってるけど実際には現

元記事を表示

Rails 初学者のアソシエーションの解説

##has_manyとかいまいちわからない人向け!
これがわかる人は不要 [*Rails ガイド*](https://railsguides.jp/association_basics.html)

1.has_manyとbelongs_toはセットではない。一緒に使うことが多いが独立して使うことができる。
2.メソッドを理解することが重要!

例えば
Author(著者)テーブルとBook(本)テーブルがあったとし、その二つを関連づけたい時。

>class Author < ApplicationRecord >has_many :books, dependent: :destroy
>end

>class Book < ApplicationRecord >belongs_to :author
>end

上記の記述で下記のような連携ができるらしいのだが、いまいちどのような仕組みなのかわからなかった、、
>@book = @author.books.create(published_at: Time.now)

**こう言う時は一つづつ分解して考えるといい**

元記事を表示

PyTorchをRubyで動かすtorch-rbをやってみた

## はじめに

RubyからPyTorchを動かすTorch-rbを動かすところまでやってみたのでレポートします。
![PyTorch](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/b55b71c3-9234-bdc8-68d5-cda1a152431c.png)![Ruby](https://upload.wikimedia.org/wikipedia/commons/0/0f/Ruby-logo-notext.png)

## Torch-rbとは
[![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/144608/734ba80d-c2e5-9418-b11b-439b3b5aab1f.png)](https://github.com/ankane/torch-rb)

Torch-rbはAndrew Kane氏が作成・公開している一連のRuby向け機械学習ライブラリの最新作です。ここ数ヶ月、An

元記事を表示

プログラミングを始めて1年

Ubiregi Advent Calendar 2019 6日目です!

#なにこれ
今日は技術の話でもなく、そもそも開発のお仕事に(まだ)就いていない人が1年、プログラミング(RubyとちょっとRails)を楽しく続けることが出来ているのでそれに関する話を書きます。

##自己紹介
株式会社ユビレジの原と申します。カスタマーサクセス(CS)部に所属しております。仕事はお客さんとの調整事やらなんやらで仕事では全くプログラミングしていません。

##そもそもなんでプログラミングやり始めたのか
純粋に楽しそうだったからです。結構もういい歳ですが、本気でジョブチェンジをしたい。世間体のあり様で言えば、管理職にでもなって部下を指導するみたいな役割をこなさないといけないんじゃないかな〜とたまに思うこともあります。ですがそれが自分にとって本当にプラスになる生き方なのかと考えると不必要なストレスを抱えて生きるよりは、楽しく仕事できた方が良いかなーとも思います。

##いろんな言語がある中でなぜRuby?
単純にユビレジがRuby on Railsで動いている & 不明点あれば弊社開発チームに質問でき

元記事を表示

Rails 6.0の “Active Storage’s ImageProcessing transformer doesn’t support :combine_options” という警告に対処する方法

## 困っていたこと

Rails 5.2時代にActiveStorageでこんなコードを書いていました。

“`ruby
user.avatar.variant(
combine_options: {
resize: “150^”,
gravity: “Center”,
crop: “150×150+0+0”,
auto_orient: true
}
)
“`

やっていることは縦長だったり横長だったりする画像を、中心で正方形に切り抜いて150×150サイズに縮小することです。(mini_magickを使用)

つまり、この画像↓を、
![3500×1500-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7465/ae311fa3-0c92-cd3a-f019-65e0d33de4ad.png)

こうするわけです↓
![3500×1500.png](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

rails cが動かねぇ!

# rails c が息をしていない…
別件でrailsのバージョンアップをして、railsを入れ直した後のこと。
consoleで確認したいことがあり、“`rails c“`を叩く。
…反応がない、ただの屍のようだ。
いや困るねん。やめてクレメンス。

# いらないプロセスは躊躇なく殺そうね
てことでプロセスを確認。

“`
ps aux | grep rails
“`
…何もないな。
調べたところ、“`rails c“`ではspringというプロセスも走るとのこと。

“`
ps aux | grep spring
~~ 8324 0.0 0.0 4352360 3228 s009 S+ 火03PM 0:00.76 spring server | ~~ | started 47 hours ago
“`
いやがった!!お前のせいか!!

“`
kill -9 8324
“`
そしてめでたくconsoleが起動。
いやぁ良かった。
無駄なプロセスは殺そう。

## 追記
“`
spring stop
“`
でも可。
これだとプロセス確認せ

元記事を表示

【自分メモ】ProgateでRubyを学ぶ【ウルトラ初心者】

#はじめに
Progateを使ってRubyを学習しています。
自分なりのメモです。
相当あたまがわるいので文章力は底辺です。

#変数
シングルクォーテーションで囲むと#{変数}は展開されない。
ダブルクォーテーションで囲む必要がある。
いかなるときも、ダブルで囲んでおけば問題ないですね。
むしろシングルを使う意味ってどこかにあるんでしょうか。

“`sample.rb
name = “田中”
puts “こんにちは#{name}さん” #こんにちは田中さん
puts ‘こんにちは#{name}さん’ #こんにちは#{name}さん
“`

数字と文字列を連結することはできない。これは変数でも同じ。
文字列の中に数値を埋め込む場合には #{変数} を利用する。

“`sample2.rb
age = 25
puts “私は” + age + “歳です” #エラー
puts “私は#{age}歳です” #私は25歳です
“`

#ハッシュ
複数の値を管理する方法のひとつ。
– 配列は要素を順番に並べて管理する
– ハッシュはキーと値でセットにして管理する

“`hush.rb

元記事を表示

OTHERカテゴリの最新記事