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

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

学び直し Part2

mada

元記事を表示

Rubyのコードを書く上で知っていると便利なこと

Rubyのコードを書く上で便利なことを参考書で学びましたので
勉強の記録用として記事にしてみました。
#%記法
##%w

“`ruby
> ary1 = [‘apple’, ‘banana’, ‘orange’]
> puts ary1
=> [“apple”, “banana”, “orange”]

> ary2 = %w(apple banana orange)
> p ary2
=> [“apple”, “banana”, “orange”]
“`
すべての要素が文字列である配列は、通常の配列記法の他に、「%w」というキーワード使って書くことができます。

##%i

“`ruby
> ary1 = [:apple, :banana, :orange]
> puts ary1
=> [:apple, :banana, :orange]

> ary2 = %i(apple banana orange)
> p ary2
=> [:apple, :banana, :orange]
“`
すべての要素がシンボルである配列は、

元記事を表示

【Rails】Gemを初公開しました

# Gemを初公開しました

[ask_year_month](https://rubygems.org/gems/ask_year_month)という、

**レシーバが何月なのか、**

スマートにチェックするメソッドを生やしただけのGemを公開しました。

例えば、

“`rb
Time.current.month == 12
#=> true
“`

よりも、

“`rb
Time.current.december?
#=> true
“`

のが見やすいよなーという所から。

ご興味がある方は良かったら使ってみてください。

## RubyGems
https://rubygems.org/gems/ask_year_month

## GitHub
https://github.com/mah666hhh/ask_year_month

## 参考記事

[RailsプラグインGemの作成方法、RSpecテストまで含めたrails pluginの作り方](https://easyramble.com/create-rails-p

元記事を表示

DockerでRails6(MySQL, Webpacker)を動かす。

Docker練習第二弾。Rails5は結構やっていたのでRails6を動かしてみようと思います。

## 環境
– Docker 19.03.13
– docker-compose 1.27.4
– Windows10 Pro

## ディレクトリ構成

“`
rails_test/
┝ Dockerfile
┝ docker-compose.yml
┝ Gemfile
┝ Gemfile.lock
┝ environments/
└ db.env
“`

## Dockerfile

“`Dockerfile:Dockerfile
FROM ruby:2.6

RUN apt-get update -qq && \
apt-get install -y build-essential \
nodejs

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \

元記事を表示

PDF出力してみたいんじゃ! 【Thinreports + Rails】

どうも。とある六本木一丁目にある会社のエンジニアです。
というわけで [SmartHR Advent Calendar 2020](https://qiita.com/advent-calendar/2020/smarthr) の5日目だぜ。

## 目的
弊社プロダクトのPDF出力に [Thinreports](http://www.thinreports.org/) を使用しているのでお友達になりたかった。

## 使うもの
Thinreports + Rails でやっていきます

## ゴール
タイトルと本文がある書類をPDFで出力できるようにする!
簡単!

## やっていこう
とりあえず rails new

“`
rails new thinreports_demo –skip-test
“`

gem 追加

“`ruby
gem ‘thinreports’
“`

“`
bundle install
“`

### サンプルPDF出力する準備
ThinreportsでのPDF出力には `tlf` というフォーマットのデータが必要なので後々用意する必要があ

元記事を表示

[Rails]Stripe Checkoutを利用して定期決済機能を実装する

# はじめに
この記事では、Stripeを用いた定期決済機能を実装します。
決済には、Ruby on RailsとCheckout Sessionを利用します。

# Stripeとは

決済サービスです。

WebサイトやWebアプリケーション、ネイティブアプリに決済システムを導入できます。似たようなサービスには、PayPal, Pay.JP, Omiseなどがあります。

Stripeは機能がとにかく豊富で、多彩な決済システムを構築できるのが特徴です。

# 用語整理

**Checkout**
Stripeの決済ページには、Checkout と Elements の2つのタイプが用意されています。

Checkout:Stipeが用意した決済専用ページ。
Elements:決済フォームとシステムだけ用意され、決済ページはカスタマイズできる。

サクッと決済ページを作成したいときはCheckoutを利用するといいですね。定期決済、都度決済どちらにも対応しています。

**Session ID**
今回はセッションを用いた決済システムを構築します。こちらの決済システムでは、レスポンス

元記事を表示

もしも・・・な Rails Girls があったら

# はじめに
この記事は [Rails Girls Japan Advent Calendar 2020](https://qiita.com/advent-calendar/2020/railsgirlsjapan) の4日目の記事です。

企画・運営に携わられている皆様お疲れ様です。
こういう企画があったら楽しいのではということで投稿いたしました。
# もしも・・・SPA な Rails Girls があったら
![20201204c.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/538241/66d5ac29-e298-c62c-ffe4-fd13ced9e3a8.png)
元ネタは、去年のAdvent Calendarの [Rails Girlsのカリキュラムをこうしていきたいみたいな提案 – Qiita](https://qiita.com/okuramasafumi/items/8feaf9efdcac6823a32c) です。
`CRUD`が基礎となるのはそうですし、日本的な基礎から入って

元記事を表示

RailsアプリのCI/CDを”GitHub Actions”で作ってみた

## 記事のきっかけ
初学者ながら自身のRailsアプリにCI/CDを入れるぞ❗️と考えました。
最近話題になっているGitHub Actionsってなんだろう❓
GitHubでCI/CDも管理できるらしい。凄い❗️
その気持ちから、他のCI/CDサービスと自分なりに比較選択をし、
GitHub Actionsを選択。実装に突き進みました。
本記事はその時のコード記録と実施内容の忘備録を兼ねて記事にしました。

## アプリ開発環境
– Rails v6.0.3.4
– Ruby v2.6.6
– PostgreSQL v12.4
– Docker-compose v1.26.2
– Docker v19.03.12

## GitHub Actionsとは
言わずも知れた開発管理必須ツールであるGitHub。
そのGitHubが提供するCI/CDサービス。
GitHubと高度に連携されており、設定によりGitHub上のコードを
自動でビルド・テスト・デプロイが可能。

## なぜGitHub Actionsなのか?
私なりにCIを選ぶにあたって他のサービスと検討しました。
他のサービ

元記事を表示

Mysql2::Error: Field ‘****’ doesn’t have a default valueに二回もハマった話

Mysql2::Error: Field ‘tag_name’ doesn’t have a default value
とは、NOT NULL制約をかけているにも関わらず値が入っていないよーといった感じのエラーです

“`ruby
class CreateTags < ActiveRecord::Migration[6.0] def change create_table :tags do |t| t.string :name,null:false t.timestamps end end end ``` とかでカラムに,null: falseで必ず値が入るように設定していたと思います なので、rails側でも ```ruby validates :name,presence: true ``` と、バリデーションをかけていたと思います。 というわけで、まず考えられる原因が #### マイグレーションファイルでnull: falseとNOT NULL制約を設けていたにも関わらず、Rails

元記事を表示

【Rails】ActionMailer のテストで Mail::Matchers を使う

## はじめに

[CBcloud Advent Calendar 2020](https://qiita.com/advent-calendar/2020/cbcloud) の2日目の記事です。

本記事では、メール送信の単体テストの際、ActionMailer が依存している [Mail](https://github.com/mikel/mail) に含まれている `Mail::Matchers` を RSpec のマッチャとして利用する方法を紹介します。

また、比較対象として、以下の2つも同時に記載します。

1. Rails Guides に記載されているテスト方法
2. RSpec のドキュメントに記載されているテスト方法

最後に、`Mail::Matchers` を使った例の紹介と、実際に動くサンプルコードを添付します。

## 動作確認環境

* ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]
* actionmailer (6.0.3.4)
* rspec (3.10.0)

##

元記事を表示

Sprockets::DoubleLinkError

初心者です。備忘録のため。残します。
超基本的な内容です。
## エラー内容

“`ruby
Sprockets::DoubleLinkError
“`

Rails にて erb ファイルを作成して、表示しようとしたら上記発生。ターミナル確認すると以下記述あり。

“`ruby
ActionView::Template::Error (Multiple files with the same output path cannot be linked (“style.css”)
In “/Users/○○/git/photo_submission/app/assets/config/manifest.js” these files were linked:
– /Users/○○/git/photo_submission/app/assets/stylesheets/style.css
– /Users/○○/git/photo_submission/app/assets/stylesheets/style.scss
):
“`

## 原因

調べてみたら、Rails

元記事を表示

第7回

\![Ubuntu-20.04.1]() \![ruby-2.7.1p83]()

# やったこと

– bundler
– if, case, Array.each

# if, case, Array.each

条件分岐を取り扱おうということだ

### お題

入力された年数がleap year(うるう年)かどうかを判定する
プログラミングの実習でよくある課題だが、条件分岐が複雑

### まず4の倍数かどうかを判定する

入力部は

“`ruby
p year = ARGV[0].to_i
“`

to\_iとはIntegerであるということを示すものらしい

“`ruby
if year%4==0 then
p true
else
p false
end
“`

最初の条件分岐文がこちら。yearを入力として、そ

元記事を表示

rbenvのインストールについて(Checking for rbenv shims in PATH: not found)

## 結論
シェルの確認

.zshrcファイルの作成

eval “$(rbenv init -)”
export PATH=”~/.rbenv/bin:$PATH”
export PATH=”~/.rbenv/bin:~/.rbenv/shims:$PATH”
の三行を追加

source ~/.zshrc
## 環境
– Mac

## 問題点
“`
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
“`
を実行すると、

“`
Checking for `rbenv’ in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: not found
The directory `/Users/ユーザー名/.rbenv/shims’ must be present in PATH for rbenv to work.
Please run `rbenv init’ a

元記事を表示

RailsでWeb APIを実装しよう!

# はじめに

[PORT Advent Calendar 2020](https://qiita.com/advent-calendar/2020/port) の4日目の記事です!

はじめまして! PORT新卒エンジニアの[しゅんいち(shxun6934)](https://mobile.twitter.com/shxun6934) です!

業務でのとあるタスクにて、Railsを使用して**WebAPI**を実装することになりました。
今までは、WebAPI(QiitaとかTwitterとかお世話になりました。)を使用する側でしたが、WebAPIを**作成する側**になったので、いろいろわからないところが多かったです。

簡単にですが、そのタスクに臨むにあたって**学んだこと、意識していたこと**を皆さんに共有しておきたいと思います。

# そもそも、APIって何?

API(Application Programming Interface) は、**アプリケーションとアプリケーション、人、組織をつなげてくれるもの**です。

APIと言っても種類はいくつかあります。
(例:

元記事を表示

$rails s でサーバーが動かない

# 開発環境
Ruby 2.5.0
Ruby on Rails 6.0.3.4
rbenv 1.1.2
macOS Big Sur v11.0.1

# エラー内容
“`rails s“`とコマンドを打つと

“`
[WARNING] Could not load command “rails/commands/server/server_command”. Error: uninitialized constant URI::Generic
/Users/user/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/bootsnap-1.5.1/lib/bootsnap/load_path_cache/core_ext/active_support.rb:00in ‘block in load_missing_constant’
(同様の文が何行も出るため中略)
/User/user/Desktop/rails_testbin/spring:15:in `
bin/rails:3:in `load’
b

元記事を表示

素数一覧を求めるワンライナー各言語まとめ

お遊び記事です.【追記】お遊びのつもりが,とても秀逸な別解がコメント欄に集まりましたので,そちらもぜひ御参照下さい.とりあえず,J言語すげえ.

# アルゴリズムと実装

主に関数型リスト処理を用いて,**$x$を$2〜x-1$の各整数で割った余りのリストに0が含まれていなければ$x$を素数と判定**しています.このため,任意範囲の整数リスト生成(`range`等),リスト各要素への関数適用(`map`等),リストに特定の値が含まれているかの判定(`include`等),条件を満たした要素のみをリストから取り出す処理(`filter`等)を行う関数があると,より短いワンライナーとなります.

# 各言語での記述例

$1> ->n{(2…n).reject{|x|(2…x).map{|z|x%z}.include?(0)}}[100]
=> [2, 3, 5, 7, 11, 13, 17, 19, 23,

元記事を表示

prawnで請求書っぽいPDFを作る

本記事は[iCARE Advent Calender 2020](https://qiita.com/advent-calendar/2020/icare) の5日目です。

# はじめに

本記事では[prawn](https://github.com/prawnpdf/prawn)を用いた請求書っぽいPDFの作成方法を解説します。

RailsでPDF作成する場合だと[wicked_pdf](https://github.com/mileszs/wicked_pdf)も使えますが、wicked_pdfがhtmlライクにPDF作成ができるのに対して、prawnはゴリゴリの[DSL](http://e-words.jp/w/DSL.html)なので、学習コストがかかりますが、wicked_pdfよりも凝ったPDFを作ることができるので、個人的にはprawnの方が好きだったりします。

## セットアップ

今回の請求書PDFではテーブル表示を行いたいので、prawn-tableを使います。

“`ruby
# Gemfile

gem ‘prawn’
gem ‘prawn-table

元記事を表示

これから投稿していきます。

Web開発エンジニアを目指すためにいまから頑張ります。

まずは、Ruby、Railsを用いたポートフォリオの作成に挑みます。

事前知識がないので少しアウトプット
ブラウザにプログラムを反映するために

ルーティング→コントローラ→ビューの順を踏む

▼ルーティング
コントローラー、ビューがどういった定義で順で実行されていくか
定める役割

▼コントローラー
ルーティングを参照しどのビューを実行するか決める役割

▼ビュー
具体的なHTMLファイルなど実行されるプログラムを格納する場所

元記事を表示

YouPlot – 標準入力からターミナルにグラフを描出するツール

## はじめに

こんにちは。昨年のアドベントカレンダーでは、GR.rbというRubyでグラフを描出するツールを紹介いたしました。

* [Rubyでグラフを描画するツール GR.rb の紹介](https://qiita.com/kojix2/items/456259f40d5563005cd1)

今年は[YouPlot](https://github.com/kojix2/youplot)というツールを作ったので紹介します。

Github: https://github.com/kojix2/youplot

### YouPlotは、ターミナルにグラフを描出するソフトです

 ターミナルの画面にアスキーアートでグラフを表示したいと思ったことはありませんか?YouPlotはそのためのツールです。グラフを描出するエンジンの部分は、mrknさんの作った[UnicodePlot](https://github.com/red-data-tools/unicode_plot.rb)を利用しています。**エンジンの部分を作る記事ではありません。**

 この記事では、前半でYouPlo

元記事を表示

Railsでログイン機能を作る

Railsでログイン機能をつくってみました

今回作るログイン機能はタスク管理アプリで
初回利用時にユーザー登録を行い、その後利用するときは「私は先日に登録したユーザーです」と言う認証を行うやり方。

セッションとCookie

ログイン機能を実装する前に前提知識となるセッションとCookieについてはこちらの記事に書きました。
https://qiita.com/ombossk0720/items/5345b8ef267749e550fe

Userモデルを作る

認証機能を作るにはアプリに新しい概念を加える必要がある。
それはアプリケーションを利用する概念。
そこでユーザーを表すUserモデルを作る。
タスク管理アプリのUserモデルに最低限必要なのはメールアドレスとパスワード。
ただそれだけでは、ユーザーを表すのに常に長ったらしいメールアドレスか、暗号のような数字を
表示しなければいけなくなるので、扱いやすいようにユーザー名を別途保持することにする。

generateコマンドを使ってUserモデルをつくってみる

“`%

元記事を表示

OTHERカテゴリの最新記事