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

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

文言最初の一歩

## 0.はじめに

初投稿となります

まずは「漢文風プログラミング言語」
__文言__ を紹介させていただきます

[漢文風プログラミング言語「文言」の基本文法を読み解いてみた](https://qiita.com/GandT/items/920af538c0a405199815) – @GandT

## 導入

[wenyan](http://wenyan-lang/lingdong.works)

GitHub よりソース取得

npm install ではないらしい

## 実行

npm startではないらしい

当方windowsユーザーです

実行方法わからないので

‘’’
cd site
ruby -run -e httpd . -p 3000
‘’’

ブラウザより

http://localhost:3000/ide.html
でエディター起動

サンプルアプリ実行

## おわりに

わからなすぎで、実行だけならオンラインからも出来たのですが、縦書きレンダリングとruby出力を夢見て頑張ってみます

元記事を表示

#Stripe API + #Ruby gem で定期支払いの請求を作成する例 ( 顧客作成・デフォルトの支払い方法を登録・プランの作成・税率情報の登録など含む )

# Code

No need to payment intent, payment source attache.

“`rb
require ‘stripe’

Stripe.api_key = ENV[‘STRIPE_SECRET_KEY’]

product = Stripe::Product.create(name: ‘Gold plan’)
plan = Stripe::Plan.create(interval: ‘month’, currency: ‘jpy’, amount: 1000, product: product.id)
tax_rate = Stripe::TaxRate.create(display_name: ‘Tax Rate’, percentage: 10.0, inclusive: false)
customer = Stripe::Customer.create
payment_method = Stripe::PaymentMethod.create(type: ‘card’, card: { number: ‘42424242424242

元記事を表示

ずら〜っと、Railsでデータベースを確認する方法一覧

データベースクライアントの起動
$ rails dbconsole

こうなる
sqlite>

テーブル一覧の見方
sqlite> .tables

指定したテーブルのカラムの確認方法(スキーマの確認)
.schema テーブル名

元記事を表示

WindowsにRails環境を導入してみる

WindowsにRailsを導入しようとしたらめちゃくちゃ手こずったので、記録しておこうと思って書きました

###初めに
[ここ](https://rubyinstaller.org/downloads/)からRubyをダウンロードする、Devkitがついてるやつがいいらしい
インストールが完了したらコマンドプロンプトを開いて`gem install rails`を実行
問題なくインストールできたようなので次のステップへ

`rails new hoge`を実行するとガーっとファイルが作られていって安心していたら変なのが出る

~~~
Could not find gem ‘sqlite3 (~> 1.4) x64-mingw32’ in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.
~~~

意訳:ふえぇ、SQLite3 v1.4が見つからないよぉ
[Railsを始めてsqlite3まわりのエラーで躓いている人たちへ](https://qiit

元記事を表示

Rubyを使って予約システムを使いやすくハックしよう

# はじめに

こんにちは。GMOアドマーケティングのyoshishinです。
皆さんは普段、よく使うWEBサービスなどありますか?
自分は最近、予約システムをよく使うようになったのですが、毎回同じ操作をしており、効率的ではないと感じています。
多くの人が使いやすいように作られているとは思うのですが、人によって感じ方は様々で、手順が決まっているのであればいつもの設定をボタン一つでできたら便利ですし、中には自分専用の画面がほしかったりするかもしれません。
今回はこのような予約システムを使いやすくするためのハックを考えていきたいと思います。

# 目標

予約システムから必要な情報を取り出し、使いやすいJSON形式に整形して任意のレスポンスを返すことを目標とします。
JSON形式であれば、データを元に画面を作ったり、思い通りに操作することが容易となります。

## 開発環境

まずは開発環境を整えます。
今回メインで使うライブラリはnokogiriです。
HTMLという素材からノコギリで必要なものを切り出していくイメージですね。
Rubyが使える状態であれば、以下のコマンドでインストールで

元記事を表示

Ruby on rails エラーメッセージの表示 

##エラーメッセージの表示方法

form_forヘルパーで作る入力フォーム内に
エラーメッセージを表示させる方法を学んだのでまとめておきます。

初めに一例のコードを書きます。
前提として、入力フォームにバリデーションがかかっていることとします。
エラーメッセージとバリデーションはセットです。

“`

    <% @user.errors.full_messages.each do |msg| %>

  • <%= msg %>
  • <% end %>

“`

errors.full_messagesは全てのエラーメッセージを配列で取得します。

次に、取得したエラーメッセージを一つずつmsgという変数に代入します。

そして、liを使ってエラーメッセージの数だけリストが作られます。

参考
https://qiita.com/ryuuuuuuuuuu/items/1a1e53d062bff774d88a

元記事を表示

Ruby on rails helperの役割

##helperの役割
viewで使うメソッドを定義することです。
helperにメソッドを定義することで、viewがDRYになります。

##helperをviewに呼び出す方法
viewでhelperにあるメソッドを指定します。

例として、`application.html.erb`にhelperで定義したメソッドを呼び出してみます。

“`application_helper.rb
def full_title
“full_title”
end
“`

“`application.html.erb
<%= full_title %>
“`
viewで”full_title”が表示されます。

元記事を表示

Ruby on rails でルーティングを確認する方法

##ルーティングを確認する方法

初めに、コマンドラインで次のコードを打つ。

“`
rails routes
“`
すると、次の結果が表示されます。

“`
Prefix Verb URI Pattern Controller#Action
root GET / static_pages#home
help GET /help(.:format) static_pages#help
about GET /about(.:format) static_pages#about
contact GET /contact(.:format) static_pages#contact
“`

以上です。

元記事を表示

railsアセットプリコンパイルまとめ

  • javascript
  • scss

javascript

プロジェクトフォルダのapp/assets/javascript以下のファイルをすべて読み込む。
railsの初期ファイルのapplication.jsは何かというと、assets/javascript以下のファイルをすべて読み込みまとめたものにあたる。勝手にファイルをまとめてくれるので、application.jsに追加でrequireしなくてもよいのである。
しかしgemなどで追加した機能を読み込みたい場合は、application.jsにrequireする必要がある。

これはどこで使用するのかというともちろんviewである。だいたいは、layouts/application.html.erbに書かれている。<%= javascript_include_tag 'application', オプション %> のように記述すればよい。’application’の部分は、他のファイルでもよいがPATHを通す必要がある。

scss

元記事を表示

Rails6 マイグレーションファイルの記載ミスでマイグレートしてしまったらrollbackを使おう

# 目的

– マイグレーションファイルの記載を間違え、マイグレートしてしまった時の対処法をまとめる

# 筆者がやらかしたこと

1. マイグレーションファイルの記載をミスる。
1. その状態でマイグレートしてしまう。
1. データベースを確認したところ期待した方になっていない。
1. 現在のマイグレーションファイルを削除する。
1. 再度、マイグレーションファイルを作成し正式な記載にをした。
1. マイグレートを実行した。
1. データベースが期待したものになっていた。

# 間違えてマイグレートをしてしまった時はrollebaskをしよう

– マイグレート後にDBに異変を感じたらすぐに下記のコマンドを実行してマイグレート前の状態に戻す。

“`terminal
$ rails db:rolleback
“`

– そのあとでマイグレーションファイルの記載を確認、修正を行い再度、マイグレートを行う。

元記事を表示

RubyをFlightRecoderを使ってブラックボックス分析する

## はじめに

性能分析や障害分析で詳細なログ情報が取得たいときは良くあります。

私は普段はRuby製のバッチやWebアプリを本番で動かさないのであまり気にした事が無かったのですが、パッと思い付かなかったのでJFR(JDK Flight Recorder)をRubyに適用出来るかを試してみました。

[JFRというブラックボックス分析向けのJVMの仕組み](https://koduki.github.io/docs/book-introduction-of-jfr/site/01/01-what_is_JFR.html)で低遅延のプロファイラを常時本番環境のアプリに適用してCPUやメモリ、GCログはもちろんスレッドダンプやI/O、カスタムイベントを1ファイルに集約保存する仕組みです。
これによって、障害時の原因の特定をスピーディーに実施できます。

今回はTruffleRubyを使う事でJFRを有効にしてみました。

## TruffleRubyのインストール

まずはインストールです。rbenvとかで入れたくなるのですが、その場合JVM版が入らないのでGraalVMからインストー

元記事を表示

新卒が入社半年で社内サービスをリリースしてエンジニアになった意味を見つけたお話

Classi Advent Calendar 22日目は、新卒でClassiに配属され、エンジニアをしている@ruru8がお送りします。

今回お話するのはClassiの社内研修のお話。からのその過程で作成したRailsアプリケーションのお話です。
作成したアプリケーションは『Classi BookBook(クラッシーブックブック)』と称し、社内で多くの人に利用してもらえるサービスとなりました。
なんの経験もスキルもない新卒エンジニアがいったいどのようにして社内で親しまれるサービスを作ったのか、自分の中での振り返りの意味も込めてお話したいと思います。

## Classi BookBookって?
社内での書籍購入を管理するアプリです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533070/21cb1d4c-4b40-024d-e640-10af65a20d81.png)
書籍一覧で登録されている書籍を見ることができ、ステータスでその書籍の状態を確認します。
管理者によって書籍が購入

元記事を表示

Zeitwerkの壊し方

この記事は[Ruby on Rails Advent Calendar 2019](https://qiita.com/advent-calendar/2019/rails)の13日目です。

インフルエンザにやられて完全に出遅れました。ごめんなさいごめんなさい。

# Zeitwerkとは

みなさん、**定数解決**してますか?

Rails6から導入されたZeitwerk、旧来のconst missingを利用した仕組み(classic mode)で見られた困った挙動のほとんどを解決してくれる素晴らしいヤツですね。

クラスを定義しても定義しても一向に参照されず、星空見つめてすすり泣いたあの日はもう過去のもの ?

ここでは、Zeitwerkのドキュメント、およびコードリーディングを通じて気づいた、導入の注意点やTIPSなどを紹介してみたいと思います。

##### (検証環境)
– Ruby 2.6.5
– Ruby on Rails 6.0.0

前提知識として、Rubyの定数解決の仕組みを多少理解していると良い・・かもしれません。

https://qiita.com/fu

元記事を表示

Railsアプリケーション内では何が起きてんの?

# Railsアプリケーション内イメージ図

![MVCモデル.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/548345/36fb4ae1-522a-40c8-f913-bc905037cdd6.jpeg)

# イメージ図をざっくり解説 – 6ステップ
#### 例えば、「ブログ新規投稿ボタン」を押した時。

####1. PC → ルーティング
PCからインターネットを通じて、「新規投稿ページ見せて」(リクエスト)という指示が来ます。リクエストには、どんな種類のリクエストか(HTTPメソッド)と見たいページがどこにあるか(URI)の2つの情報が含まれます。HTTPメソッドはデフォルトで決まっています。(今回はページを表示するというリクエストの種類のGET)また、URIは作成段階で自動的に生成されるので、ブログ新規投稿ボタンにそのURIに飛ばすという設定を、作成段階で仕込みます。
![MVCモデル1.jpg](https://qiita-image-store.s3.ap-northeast-1.

元記事を表示

Re:Backlogs というプロジェクト管理(タスク管理)ツールを OSS としてリリースしました

![20191221_rebacklogs.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/19717/98825f33-67fe-634c-08a9-bc585304897d.gif)

読み方: Re:Backlogs (リ・バックログ)

https://github.com/kaishuu0123/rebacklogs

# 画面紹介

デモサイト: https://rebacklogs.saino.me/

Twitter, Google, GitHub ログインに対応しているので、お気軽にお試しください:sparkles:

## マスターバックログ
スクリーンショット 2019-12-20 15.38.54.png

元記事を表示

WindowsでRuby 分かりづらいファイル管理をスッキリ

#Rubyでまず戸惑うファイル管理
プログラムは書けて保存できたけどファイルが取り込めない、そんな時に

##1.プログラミングの保存
今回は例として、Hello Rubyとメッセージを返すプログラムを考える。
以下のプログラムをTeraPadで入力し、
“`kensyuu15.rb“`
というファイル名で保存

~~~
print(“Hello, Ruby.\n”)
~~~

この時、どこに保存したのかを的確に把握しておく。
作ったファイルまでの道を、パソコンに道案内するイメージだ。

自分は、デスクトップのFolder1っていうファイルの中の20191219っていうファイルの中に保存した。

##2.保存したファイルへの道を、PCに教える

Rubyを起動する。
PCに目的のファイルを案内する。

案内方法は、場所を順番に書き、/で区切る。
その冒頭にその場所に行ってという意味のcdを付ける

~~~
cd /mnt/c/Users/aiko/Desktop/Folder1/20191219
~~~

上記は、aikoさんというユーザーがデスクトップのFolder1ってい

元記事を表示

rbenv (自分用チートシート)

*以下、CentOS7で実施*

### rbenv のインストール(最初だけ)

下記コマンドをひたすら打つ

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ cd ~/.rbenv && src/configure && make -C src
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

### インストールできるrubyのバージョンのリスト

$ rbenv install -l

### 指定バージョンのrubyインストール
(これはソースからコンパイルとかやるんで、時間かかる)

$ rbenv install 2.6.2

### 指定バージョンのrubyを使うとき

元記事を表示

[Rails]コントローラ名、アクション名、URLなどを取得する

ページにアクセスした際にRails側で

– コントローラ名
– アクション名
– URL

などを取得します。

# 想定する状況
マイページ(http://localhost:3000/mypage)
から
記事投稿画面(http://localhost:3000/articles/new)
に移動したときにコントローラで`binding.pry`を使って処理を止めてみます。

## コントローラ名

`controller_name`

“`
[1] pry(#)> controller_name
=> “articles”
“`

## アクション名

`action_name`

“`
[2] pry(#)> action_name
=> “new”
“`

## HTTPメソッド名

`request.method` または `request.request_method`

“`
[3] pry(#)> request.method
=> “G

元記事を表示

Rails6.0.2のActiveRecordに関する変更点まとめ

[Ateam Finergy Inc. Advent Calendar 2019](https://qiita.com/advent-calendar/2019/ateam-finergy)の21日目です。

今回は、前回10日目に投稿した[Rails6.0.2の変更点まとめ](https://qiita.com/taiteam/items/6eaf765323f70dc05ff8)の続きになります。
前回は`Active Support`,`Active Job`,`Action Pack`,`Railties`について記述しました。
今回は`ActiveRecord`についてです。

– 参照
– [Rails 6.0.2 released](https://weblog.rubyonrails.org/2019/12/13/Rails-6-0-2-has-been-released/)
– [rails/CHANGELOG.md at v6.0.2 · rails/rails](https://github.com/rails/rails/blob/v6.0.2/a

元記事を表示

【Rails】子テーブルの集合から親テーブルのインスタンスを重複を除いて取得する方法

##はじめに
初学者がポートフォリオ作成でハマったことをメモします。
魚の食味投稿サービスを作成中。
##環境
Ruby 2.6.3 ,Rails 5.2.4

##やりたいことと結果
・やりたいこと
子テーブルの集合から親テーブルのインスタンスを重複なく取得したい。
・結果
`Fish.joins(:reviews).distinct`

##前提
親テーブル fishes
子テーブル reviews

Fishインスタンスに複数のReviewインスタンスが紐づいている。

“`
class Fish < ApplicationRecord has_many :reviews class Review < ApplicationRecord belongs_to :fish ``` ##やりたいこと(詳細) 投稿(review)を魚(fish)の種類で検索する為に、複数の投稿に含まれる魚の名前をselectの選択肢に表示したい。 その為に、Reviewインスタンスの集合に紐づいているFishインスタンスを重複なく取得したい。 つまり、reviewsレコードのfish_

元記事を表示

OTHERカテゴリの最新記事