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

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

graphql-ruby でS3の署名付きURLを発行するためだけのmutation

フロントから直でS3にアップロードしたい時に署名付きのURLを発行すると思うが、それを行うための mutation を書いた。

### バージョン情報
Ruby: 2.6.3
graphql-ruby: 1.10.1
aws-sdk-s3 1.30.1

“`ruby
# frozen_string_literal: true

require ‘aws-sdk-s3’

module Mutations
class CreateS3PresignedUrlMutation < Mutations::BaseMutation description 'S3アップロードのための署名付きURLの発行' argument :filename, String, required: true field :presigned_url, String, null: true field :presigned_fields, GraphQL::Types::JSON, null: true field :errors, [Types::Objec

元記事を表示

複数のカラムを更新するメソッドまとめ【Ruby on Rails】

Railsには複数のカラムを同時に更新するメソッドが複数あるため、違いをまとめました。


### assign_attributes

特徴

* DBの保存はされない。
* alias(別名) は attributes=

使用例 (Userというテーブルがある場合)

“`ruby
user = User.first
user.assign_attributes(family_name: “foo”, given_name: “bar”)
user.save

#attribute=の場合
user.attributes = { family_name: “foo”, given_name: “bar” }
“`

保存はされないので、saveを呼び出す必要があります。


### update_attributes

特徴

* DBの保存に保存される。
* alias(別名) は update
* バリデーションのチェックやコールバックの呼び出しも行われる。

元記事を表示

【Rails】rails_adminでコピペ新規作成する方法【rails_admin_clone】

#概要
rails_adminを使ってデータ登録するにも、毎回ゼロから打ち込むのめんどくさかったです。
コピペ&新規作成&登録したい!

そこで見つけた「rails_admin_clone」のgemですが、日本語解説が見当たらなかったので一応投稿しておきます。

#導入方法

公式Git
https://github.com/dalpo/rails_admin_clone

ぶっちゃけ全部これ見てやれば良いですね……。
Gemfileでの順番が大事だよ!というのだけ注意すれば良さそう。
(順番なんかが影響する事あるんか……)

メソッドの記述場所だけ分かりにくかったのですが、app/model/でそれぞれのモデルに書けば良かったです。

##Gemfile

“`text:Gemfile
gem ‘rails_admin_clone’
gem ‘rails_admin’
“`

順番注意!
書いたらbundle install

##共通設定
cloneのaction追加、これは必須。

“`ruby:config/initializers/rails_admin.rb

R

元記事を表示

【Rails】jpostalとjp_prefectureを用いて住所自動入力の実装

# 目標

**ユーザー新規登録画面で郵便番号を入力すると、それ以降の住所(番地まで)を自動入力する。**
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/fb8341fb-4481-c06f-2d21-59afcd0817ef.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[ログイン機能実装](https://qiita.com/matsubishi5/items/5bd8fdd45af95

元記事を表示

[技術メモ]Rubyの長所、短所について

オブジェクト指向を採用しており、保守、運用に秀でており、インタプリタ方式なのでデバッグも容易です。また、動的型付け言語かつシンプルな構文が多いので記述量少なくあらゆる実装を行うことができます。
一方、処理速度は他の言語に比べ遅いので、大規模アプリや処理速度が重要なサービスには向いていないといえます。

元記事を表示

can’t write unknown attribute `category_id`を解決した話

投稿機能でpost投稿する際にcan’t write unknown attribute`category_id`が出現した為、記録用に投稿。

#仕様
https://qiita.com/cawaz3/items/e755a58177212f2aca6c
テーブル構成等はこちらの記事を参考。
中間テーブルを実装し投稿時にタグidを紐付けた。

#症状
投稿画面にて投稿内容記述後に投稿確認画面に遷移する設定にしているが上記のエラーが出てしまいうまく遷移されない様子。

#原因
カラム名の相違
post.controller.rbではcategory_idで記述していたのにも関わらずテーブルを確認した際にcategories_idになっていた。

“`ruby:post.controller.rb
def confirm
@post = Post.new(post_params)
session[:category_ids] = @post.category_ids
return if @post.valid?
flash.now[:alert] =

元記事を表示

AtCoderでRuby学習13 二次元配列の作り方

## はじめに
Rubyおよびアルゴリズムの学習の一環として競技プログラミングに参加しています。
ここでは、学習の中で学んだことをアウトプットしています。

今回は二次元配列の作り方について。
第三回アルゴリズム検定第二問[ダイナミック・スコアリング](https://atcoder.jp/contests/past202005-open/tasks/past202005_b)において、
二次元配列を使いたい場面が出てきました。
ここで少し手こずったので、復習の為にまとめておきます。

## やりたいこと
以下のようなことがやりたくて、二次元配列を作ろうと思いました。

例えば、
ある試験に3名の参加者(1,2,3)が参加する。
その試験では、3問の問題が出題される。
参加者ごとにそれぞれの問題に解答出来たかどうかを管理する。

イメージは下記のような感じです。

“`ruby:イメージ
# ①こんな感じの二次元配列を作っておく
[[0, 0, 0],[0, 0, 0],[0, 0, 0]]

# ②参加者1が1問目に正解したら、該当の要素に1をいれる
[[1, 0, 0],[0,

元記事を表示

Rails×LineBot で LINEnews風 techニュース まとめアプリを作る![前編]

# 今回したいこと
linebotとRailsでlinenews風アプリを作る
# 今回作ったもの
![ezgif-6-d27fd089a1f4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538528/57e0f258-846f-7890-cf5f-e85130235f9c.gif)

ニュース と打ち込むとニュース記事の一覧が送られてくる
(朝何時に配信みたいな機能は次回実装予定です。)

# なぜ作ろうと思ったのか
自分がエンジニアインターンを始めて4か月弱たったが、もっとtech系のニュースに敏感になりたいと思った。
そして、linenewsっぽく受信できれば読む習慣がつくのではと思い、作ってみることに。
イメージとしては朝刊新聞みたいな

# 今回の実装環境
“`
Rails 6.0.3.1
ruby 2.6.1
“`
surface pro 6 でWSL使用
アプリ自体はherokuにデプロイ

# 制作の流れ

## 1. Line Developpersに登録する ~ her

元記事を表示

Ruby on Rails6 実践ガイド cp7~cp9 【メモ】

## はじめに
この記事の筆者はプログラミングを学習し始めたばかりの初心者です。間違いがあれば指摘していただけると幸いです。

## 概要
この記事は[Ruby on Rails6 実践ガイド](https://book.impress.co.jp/books/1118101134)を読んで学んだことを自分用のメモとして記録したものです。抜粋してピックアップするので読みづらいと思われます。すいません。
この本には、続編の[機能拡張編](https://book.impress.co.jp/books/1118101135)もあり、記事を書いている段階で二冊とも学習を終えています。復習もかねて記事を書いていくつもりです。
18のチャプターに分かれているので、見出しごとに区切っていきます。

前の記事
[Ruby on Rails6 実践ガイド cp4~cp6 【メモ】](https://qiita.com/nizi24/items/aca9a745ccda08081eeb)

## Chapter7 ユーザー認証(1)

##### コマンドで生成したファイルを削除する

“`
$ b

元記事を表示

[Docker] docker-compose up でエラーが出た話

“`docker-compose up“`をすると、以下エラーが出ました。

“`
web_1 | => Booting Puma
web_1 | => Rails 6.0.3.1 application starting in development
web_1 | => Run `rails server –help` for more startup options
web_1 | Usage: yarn [options]
web_1 |
web_1 | yarn: error: no such option: –integrity
web_1 |
web_1 |
web_1 | ========================================
web_1 | Your Yarn packages are out of date!
web_1 | Please run `yarn install –check-files` to update.

元記事を表示

Ruby on Rails6 実践ガイド cp4~cp6 【メモ】

## はじめに
この記事の筆者はプログラミングを学習し始めたばかりの初心者です。間違いがあれば指摘していただけると幸いです。

## 概要
この記事は[Ruby on Rails6 実践ガイド](https://book.impress.co.jp/books/1118101134)を読んで学んだことを自分用のメモとして記録したものです。抜粋してピックアップするので読みづらいと思われます。すいません。
この本には、続編の[機能拡張編](https://book.impress.co.jp/books/1118101135)もあり、記事を書いている段階で二冊とも学習を終えています。復習もかねて記事を書いていくつもりです。
18のチャプターに分かれているので、見出しごとに区切っていきます。
Chapter3までは環境構築がメインなので飛ばしています。

# Chapter4 RSpec

[skipとpendingは何が違うのか?【RSpec】](https://qiita.com/nizi24/items/bddeca0379a4d11a5240)
# Chapter5 ビジュアルデザイ

元記事を表示

Ruby 電話帳作成問題 解いてみた(解答例あり)

# はじめに
『プロを目指す人のためのRuby入門』通称チェリー本を学習後のプログラミング初心者です。
インプットしたものを手を動かして実践してみたいなと思ったら、作者の記事を見つけました。
[「アウトプットのネタに困ったらこれ!?Ruby初心者向けのプログラミング問題を集めてみた(全10問)」](https://blog.jnito.com/entry/2019/05/03/121235)

この5つ目の問題を解いてみました。

他の問題はこちら
[一問目](https://qiita.com/u_nayama/items/389b229bd569fdfc1874):カレンダー作成問題(たのしいRuby 練習問題)
[二問目](https://qiita.com/u_nayama/items/6009dcfe148e15ad9e1b):カラオケマシン作成問題
[三問目](https://qiita.com/u_nayama/items/7be7e6c5661d93272de8):ビンゴカード作成問題
[四問目](https://qiita.com/u_nayama/items/82e

元記事を表示

デプロイ後のテーブルの変更とデータベースのリセットについて

# はじめに
通っているプログラミングスクールで初めてのチーム開発を行いました。データベース設計については十分に検討したつもりでしたが、開発する中でカラム変更や本番環境のデータベースをリセットしたい!!と思うことがありました。そこで、自分の備忘録として記録を残そうと思います。
なお、デプロイ後のデータベースのリセットは本来あってはならないことであると思います。参考にされる方は、プログラミング初心者が書いた記事であることを忘れないで下さい。

# 開発環境
AWS EC2
Capistranoによる自動デプロイ
Capistrano Version: 3.14.0 (Rake Version: 13.0.1)
Rails 5.2.4.3
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin19]
mysql Ver 14.14 Distrib 5.6.47, for osx10.15 (x86_64) using EditLine wrapper

# 参考にさせていただいた記事
[【Rails】本番環境デプロイでよく使うコ

元記事を表示

なんでバリデーションかかってないの!?(unique:true編)

いやーね。
私本当にびっくらこきましたよ。
今ねrails5.2でフリマアプリ実装中なんですよ。:frowning2:
バリデーションみんなかけるよね?
うんわかってるよ。
みんなアタイとおんなじ気持ちだよね。:girl_tone2:
アタイわかってる。
まずね。
バリデーションはモデルとマイグレーションファイルどっちにも書いた方が良いみたいなんだけど、
今回はマイグレーションファイルの方に関してだから、モデルの方のバリデーションに関しては他の方の記事を参考にすると良いわ。

#1.最初に見て欲しいのはコレっ!
:writing_hand_tone1:

“`ruby:db/migrate/create_users.rb
class DeviseCreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| ## Database authenticatable t.string :first_name, null:false ,un

元記事を表示

rbenv installが成功しない時は、環境変数「RUBY_BUILD_CURL_OPTS」を使ってみよう。

[Vagrant](https://www.vagrantup.com/)で作成しているローカルの開発環境で、`ruby`を入れる際、`rbenv`を使おうとしました(`Vagrant`なので、基本的に`root`で作業しています)。

`rbenv`のインストール自体は完了しましたが、`rbenv`で、いざ`ruby`をインストールしようとすると、以下のエラーが出ました。

“`
[root@localhost ~]# rbenv install 2.6.6
Downloading ruby-2.6.6.tar.bz2…
-> https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.bz2
error: failed to download ruby-2.6.6.tar.bz2

BUILD FAILED (CentOS Linux 7 using ruby-build 20200520-2-gf00582b)
“`

## `curl`の失敗

ファイルをダウンロードできないようです。調べてみると、`rbenv`ではフ

元記事を表示

Ruby技術者認定試験silver 合格

Ruby技術者認定試験silverを受けて、無事に合格したので
どんなことをして合格に至ったかの経緯をつらつら書いていこうと思う。

**受験日:2020/6/8**
**点数:88点(合格点 75点以上)**
**勉強時間:約120時間(土日含めて)**
**勉強期間:3週間**
**受験費:¥16,500**

#前提
・Ruby 開発経験2ヶ月、Paiza:Bランク
・Rails スクールで個人アプリ作成
・Java 業務経験半年くらい

#使用した教材
####Webサイト
>基礎問題やRuby技術者認定試験(Silver)対策問題がある 基礎合わすと100問以上(意外と解説がしっかり書いてある)
[ミニツク – Rubyのe-ラーニング研修システム](http://www.minituku.net/)
 
>160問くらいがランダムで50問出てくる(Gold用の問題もある)
[REx – Ruby Examination](https://rex.libertyfish.co.jp/)
 
>簡単な解説付き模擬問題 50問
[github模擬問題(Silver試験用)](h

元記事を表示

skipとpendingは何が違うのか?【RSpec】

どちらもテストを保留にするためのメソッドですが、挙動が違うようです。

##### skipの特徴
* exampleが実行されない。

##### pendingの特徴
* exampleが実行される。
* exampleが失敗しても、pending(保留中)と表示される。
* 反対にexampleが成功すると、failになる。

問題を調査してるときは、問題が解決してテストが通ると失敗して知らせてくれるので、pendingの方がよさそうです。

#### その他のテストを保留にするメソッドについて

“`ruby
xit “足し算” do
expect(1 + 1).to eq 2
end

xdescribe “#nil?” do
xexample “nilであること” do
expect(nil).to be_nil
end
end
“`

xitやxdescribe、xexampleなどはskipと同じ挙動です。

## さいごに

筆者はプログラミングを学習し始めたばかりの初心者です。間違いがあれば指摘してくださると幸いです。

元記事を表示

Mandelbrot ベンチマーク(C, PHP, HHVM, Ruby, Python, and Kinx)

# Mandelbrot ベンチマーク

– 対象 … C, PHP, HHVM, Ruby, Python, and 我らが Kinx

## はじめに

この記事 [【PHP8】PHPでJITが使えるようになる](https://qiita.com/rana_kualu/items/ba312d2789bd228f887a) でのベンチマークを拝見させていただきまして。

PHP8 に JIT が入るとかで Mandelbrot のベンチマークをしているのですが、は!、これは我らが Kinx 君も `native` メソッドでブイブイ言わせられるやつでは!、との気持ちから試しにベンチマークしてみよう、という趣旨のイベントです。

記事にしたということは、**勝負になった** ということでもあります。というか予想以上。やったね!

ちなみに、Kinx って何?という方は以下をご参照ください。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)

元記事を表示

Railsでエラー画面を作ろう

#Railsでエラー画面を作る

##エラーを捕捉する
Railsのコントローラにはrescue_fromメソッドというクラスメソッドがあり、
アクション内で発生した例外の処理方法を指定できます。
以下は500Error(WEBサーバーでのエラーを補足)

“`application_controller.rb
#StandardErrorが発生したらrescue500で処理を行う
rescue_from StandardError, with: :rescue500
“`

##アクションで処理を行う
実際に処理を行うのがこちらのrescue500メソッド
メソッドには引数を指定しそれにExceptionオブジェクトが入るようになっている。

renderのあとはERBテンプレートのパスを指定しています。
renderのstatusオプションはHTTPメソッドのステータスコードです。

“`application_controller.rb

private
#引数eを指定。errorオブジェクトが入る
def rescue500(e)
render “e

元記事を表示

RubyでもParquetファイルがつくりたい

# 背景

Pythonの `pandas` や `DataFrame.to_parquet` が優秀すぎて「parquetファイルを扱うならPython」という風潮ですが、
https://pandas.pydata.org/pandas-docs/version/0.22.0/generated/pandas.DataFrame.to_parquet.html#pandas.DataFrame.to_parquet

Rubyでも簡単につくれることが判明したので、共有しておきます。

# やり方

apacheの公式gemを使えばいける。
(≠red-arrowなので注意)
https://github.com/apache/arrow/tree/master/ruby/red-parquet

## 検証

### ファイル作成

gemインストール

“`
$ gem install red-parquet
“`

テストファイル作成(csv)

“`
$ echo colA,colB > test.csv
$ echo 1,2 >> test.csv
“`

rub

元記事を表示

OTHERカテゴリの最新記事