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

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

各種 Web Application Framework メモリ使用量比較調査 (Go, Ruby, Python, Node.js, Java)

## 概要

– 「Hello World な HTML を返す程度の Web アプリケーション」または「それぞれの公式ドキュメントに載っているチュートリアルの初期状態に近いもの」を作成してメモリ使用量を比較する
– Web アプリケーションサーバは現時点でよく使われていると思われるものを使用する
– テンプレートエンジンはフレームワークのデフォルト設定またはフレームワークが推奨しているものを使用する
– macOS Catalina 上でメモリ使用量を計測
– メモリ使用量の計測には ps コマンドの RSS 値を使う (複数のプロセスを使うものはRSS値を単純に足したものをメモリ使用量とした。メモリ共有部分については考慮していないため、もう少しメモリ使用量が少ないかもしれない)

## 調査結果

メモリ使用量が少ない順に並べる。

– 7MB: Go 1.13 + Gin 1.5
– 10MB: Go 1.13 + Revel 0.21
– 24MB: Ruby 2.7 + Sinatra 2.0 + Puma 4.3
– 40MB: Python 3.8 + Flask 1.1

元記事を表示

form_withでデフォルトのデータ送信先を変更する[Rails]

ポートフォリオアプリを作っています。
作品の一覧と各作品の詳細は誰でも見られるようにしようと思いますが、作品の投稿と編集は管理者だけができるようにしたいと思います。

管理者ユーザーの作成は、過去の自分のこちらの記事を読んで実装できたのですが、

[【初心者向け】管理者ユーザーと管理者用controllerの追加方法[Ruby, Rails]][1]
[1]:https://qiita.com/tanutanu/items/7ce8826615f1af605164

その後、管理者ユーザーの投稿機能をつけ、submitボタンを押したときに、以下のようなエラーが出ました。

[![Image from Gyazo](https://i.gyazo.com/e987d1db32f9084329e6e98e980551c6.png)](https://gyazo.com/e987d1db32f9084329e6e98e980551c6)

何、`/works`に**POST**メソッドでつながるルーティングがないそうです。
確かに、`rake routes`で確認してみると、管理者ユーザーが

元記事を表示

Ruby on Rails にdeviseを使ってログイン機能を導入する

書きつくされているRuby on Railsにdeviseを導入する記事ですが、ひとそれぞれ目的が微妙に違うのか躓いてしまいます。

そこで僕の無知から来るミスも含めて共有し、同じ過ちを皆様に犯さないでいただけるのなら記事を書いたかいがあります。
また、よりよい方法があると思いますが、ご参考にしていただければと思います。

それではいきましょう!

## 環境
・macOS
・Ruby 2.7.0
・Ruby on Rails 6.0.2

## もくじ
1.Railsのプロジェクトを作成する
2.簡単な画面遷移を作る
3.ログイン機能を実装する(ここでdeviseが登場)

## 1.Railsのプロジェクトを作成する
まずはアプリを開発するディレクトリを作成する。

“`
$ mkdir app_name
$ cd app_name
“`

その後のプロジェクトの作成方法は以下を参照してください。
https://qiita.com/tom-ohiro/items/0030999b838bfe05006dak

## 2.簡単な画面遷移を作る(トップページの作成)
この工

元記事を表示

【Rails】Rspec何言ってるか解読してみた件。コントローラー#index編

今回は、写真とタイトルを投稿するアプリケーションの**tweetsコントローラーのindexアクション(トップページを表示する)が問題なく動くかどうか**、Rspecという言語を使ってテスト。

##テストする内容は2つ。
1. **tweets_controller.rb内でindexアクションの定義文で生成した@tweetsに、意図したものが入っているかな?**

“`ruby:tweets_controller.rb
def index
@tweets = Tweet.includes(:user).page(params[:page]).per(5).order(“created_at DESC”)
end
“`
1. **テスト環境上で、indexアクションを起こすリクエストを飛ばして、indexアクションに対応したビューが返ってくるかな?**

##コントローラーのテストの際は、2つの点に注意。
①tweets_controller.rbにおいて、テストしたいアクションに対し、before_actionが定義されていないこと。
②gem rails-co

元記事を表示

Ruby on railsとDjangoの違いまとめ~基礎編~

##1. はじめに
 プログラミングを始めて4ヶ月の初心者です!
Ruby on railsとDjangoを勉強中なので、
アウトプット(備忘録)として、その基礎的なコードの違いを書いていきたいと思います!!:pencil2::beginner:
railsから学習を始めていることから、
基本rails目線で、Djangoの場合はどうか?という目線で書いております:smile:
少しでも、ご参考になりましたら幸いです。
(勉強中なので、随時追記・修正していく予定です!)

##2. MVCモデル(Rails)MTVモデル(Django)
“View”の名前が被っているので、ややこしい感じがしますが、大まかな流れは同じです。
自分のイメージを以下に示します。
スクリーンショット 2020-01-04 20.46.48.pngRailsでiOSアプリのURI スキームに対応する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110571/3a89bb3e-bb83-12f1-415d-c5178bac8563.png)

> 一瞬「あれっ…」ってなったので備忘録

# TL; DR
– `routes.rb`内でダイレクトルーティングで定義すればOK

# バージョン
– Ruby:2.6.1
– Rails:5.2.3

> タイトルにiOSと書いてますがAndroidも対応できます。ただのRoutingの話なので。

# やりたいこと
– RailsがWebとモバイルアプリの両方のサーバサイドの役割を担っている
– モバイルアプリ内で、特定の画面に遷移させるURIスキームを使いたい
– メニューなどで表示されていないページへの遷移など
– 上記の例としてInstagramに「運営からのコメント」があり、チャットで操作説明を受ける画面に遷移させたいような目的があったとする
– ヘルパーリンク:`qa_chat`
– URIスキーム:

元記事を表示

FizzBuzzの問題を外部入力した数値から数えるアプリケーションを作ってみた

# 通常FizzBuzzの問題は、1~100までを数えるものが多いみたいですが、今回はgets.to_iを使用し、入力した数を(含めて)から30数えるアプリケーションを作ってみる

#目的
 ・学習のため
 ・入力した数値からFizzBuzzできたら面白そうだと思ったから

#下記条件を満たすように作る
 ・外部入力させる
 ・入力させた数値を含めて、そこから30数える
 ・3の倍数の場合はFizzと表示させる
 ・5の倍数の場合はBuzzと表示させる
 ・15の倍数の場合はFizzBuzzと表示させる
 ・「数値を入力してください」と表示させた後に、入力させる
 ・数値を入力させた後は、改行させるか、文字をいれる(ターミナル上で見栄え良くするため)

#擬似コードを書く

“`
puts “数え始める開始の数値を入力してください”
x = 数字を入力させる
puts “下記に入力した数値を含めて30数えます”
y = 30数えるため、外部入力させた数値に30を足す

xから(30数える=y)each do|i|
※ここから先はいつものFizzBuzzと一緒
if ○○なら

元記事を表示

「文言」ruby出力に挑戦

## はじめに
漢文風プログラミング言語「文言/wenyan-lang」は、初期commitが2019年12月という新しい言語で、現在進行形で開発が進んでいます。その美しいレンダリングは漢字圏に住む我々日本人としても目の離せない言語です。

初期時はハードルが高めでしたが、現在はnpmからインストールし簡単に使い始められます。まだの方は[こちら](https://qiita.com/libru1/items/6542b45a945fc7fe10cf)の記事を参考に今すぐインストールしてみて下さい

この記事では「文言/wenyan-lang」で書かれたプログラムからrubyソースに変換し、実行してみます

### 動作確認
こちらの記事の確認環境は以下の通りです

> npm v6.13.4
wenyan v0.2.0

## 実行

[公式](http://wenyan-lang.lingdong.works/)を見ると
Screen Shot 2020-01-04 at 1.24.14.pngRuby 2.4.4 から 2.7.0 までの主要な変更点をざっくりと知る

# はじめに

– rubyのバージョン `2.4.4`から `2.7.0` までの、 **比較的ビギナー層にも影響のある変更のまとめ** です。細かな変更点や、変更内容の詳細などは割愛しています。
– `2.4.4` からスタートなのは、私が使っているrubyが`2.4.3` で長らく止まっているため、それ以降の変更を一気にキャッチアップしたいがためです。
– 各マイナーバージョンは 2020/01/02 時点の最新版まで

# 2.4.4

[主に脆弱性対応のみ](https://www.ruby-lang.org/ja/news/2018/03/28/ruby-2-4-4-released/)

# 2.4.5

[主に脆弱性対応のみ](https://www.ruby-lang.org/ja/news/2018/10/17/ruby-2-4-5-released/)

# 2.4.6

[2.4系の通常メンテナンスフェースが終了](https://www.ruby-lang.org/ja/news/2019/04/01/ruby-2-4-6-released/)

# 2.4.

元記事を表示

FizzBuzzの問題で3の時はFizzと表示し、5の時Buzzと表示、15の時FizzBuzzと表示する

#RubyのFizzBuzz練習問題を解く(今回はeach doを使用)

・1から30まで数える
・3の時はFizzと表示する
・5の時はBuzzと表示する
・15の時はFizzBuzzと表示する

まず、擬似コードを考える前に、情報を整理
どのようなコードが必要そうかを並べてみる。

①1から30まで数える
②もし3だったらFizzと表示する
③もし5だったらBuzzと表示する
④もし15だったらFizzBuzzと表示する

以上。

では、擬似コードっぽいやつ書いていく。

“`
1から30まで数える(今回は、each do を使って)

if ○○なら
 puts ○○と表示する

elsif
○○なら
puts ○○と表示する

elsif
○○なら
puts ○○と表示する
else
それ以外なら
puts ○○と表示する

“`

ここにコードをあてていくと、考えがまとまりやすくなり、コードがすっきりしそう。
もし、仮説と違ったら擬似コードの考え方を実際の答えと比べてみる。

“`
(1..30).each do|i|

if i%

元記事を表示

技術ブログはじめました

みなさん、はじめまして!
音楽とアニメとハイボールが大好きな Web エンジニアの [yasu](https://fav-music.tokyo/author.html) と申します!

このたび、超個人的嗜好で厳選したお気に入りの音楽を [Apple Music](https://www.apple.com/jp/apple-music/) のプレイリスト形式で紹介していく音楽ブログ「[Fav Music](https://fav-music.tokyo/)」の構築・運用過程で得た技術的知見を [qiita](https://qiita.com/hysh8392/) にアウトプットさせていただくことにしました。

僕がここでアウトプットした技術情報がいつか誰かの助けになったら嬉しいです 🙂

今回はご挨拶がわりに僕が [Fav Music](https://fav-music.tokyo/) を構築・運用するために使用している技術や製品をご紹介させていただきます。

なお、[Fav Music](https://fav-music.tokyo/) の全てのソースコードは [GitH

元記事を表示

opensslバージョンアップ @ruby

#この記事は
opensslのバージョンアップにより、各種アプリケーションが起動できなくなるエラーが起きているようです。

ssl関係はgoogleはじめプラットフォーマーが敏感なせいかサボりにくい部分です…。

’18年後半から現在まで「phpが動かないよー」とか「rubyが動かないよー」という記事がたくさん出ていて、ぶっちゃけ対処法はそれらにも載っているのですが、如何せんスマートな方法を書いている記事がなく。

・他により良い対処法はないのか?
・なぜスマートな方法が見つからないのか?

ということで調べてみました。(phpの名前を出しておいてアレですが、rubyだけです悪しからず。)

#この記事の対象
○Macユーザー
△その他Unix系ユーザー
×windowsユーザー

#検証環境
Mac OS Mojave 10.14.6 (アップデートをサボっています)
rbenv 1.1.2
ruby 2.6.3
Rails 5.2.3

#rubyが動かない現象
事の発端は久々にrailsでバックエンドを作ろうとした時のこと。とりあえずrails -vを打ったところ、やたら長いエラ

元記事を表示

【Rails】Rspec何言ってるか解読してみた件。コントローラー#edit編

今回は、**写真とタイトルを投稿するアプリケーションのtweetsコントローラーのeditアクション(投稿したツイートの編集画面を呼ぶ)が問題なく動くかどうか、Rspecという言語を使って**テスト。

テストする内容は以下の2つ。

1. **tweets_controller.rb内でeditアクションを定義した際に生成したインスタンス変数に期待する値が入っているかな?**

“`ruby:tweets_controller.rb
def edit
@tweet = Tweet.find(params[:id])
end
“`

1. **擬似的にeditアクションを起こすリクエストを飛ばして、ちゃんとeditアクションに対応したビューが返ってくるかな?**

コントローラーのテストをする際は、2つの点に注意。
①tweets_controller.rbに、テストしたいアクションに対して、before_actionが定義されていないこと。
②gem rails-controller-testingをインストールしよう。

また、**factory_botを利用し

元記事を表示

rails: datetime_selectをカスタマイズする方法

### やりたいこと
デフォルトで“datetime_select“を使うとデザイン的にあまり美しく無いので下記のようにカスタマイズしてみた。
デフォルトだと下記のような殺風景なデザインでUX的に美しくない。

__before__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159346/1cf1d5e7-972e-1c67-3627-56797cb18050.png)

__after__
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159346/40c1b34b-4a14-6175-754d-c148ced1c4fb.png)

### どのようにしたらできるのか?
結論から言うと、“datetime_separator“を弄ることでafter後のデザインに出来る。
初めは、文字しか書けないんだろうなと思ったら“html“も書き込むことができた。

“`ruby

元記事を表示

【jQuery】RailsでValidation Pluginを使った動的なバリデーションチェックの実装その1

# はじめに
本記事がQiitaでの初投稿となります。
プログラミングスクールで開発中のECサイトアプリでjQueryのプラグインを使って
動的なバリデーションチェック機能を実装しました。
実装手順とRailsで使用する場合の注意点をシェアします。

# 開発環境
Ruby 2.5.1
Rails 5.0.7.2
jQuery 3.4.1
jQuery Validation Plugin 1.19.1
Haml 5.1.2
Sass 3.7.4

# jQuery Validation Pluginとは
jQuery Validation Pluginはバリデーションチェックが実装できるjQueryのプラグインです。

公式サイト:https://jqueryvalidation.org/

# やりたいこと
+ 入力フォームにユーザー情報を入力する際にリアルタイムにバリデーションをチェック
+ バリデーションエラーがある場合はエラーをリアルタイムに表示
+ バリデーションがNGの場合は入力欄が赤色、OKの場合は緑色に変更

# なぜjQuery Validation Pluginを選

元記事を表示

【Rails】Rspec何言ってるか解読してみた件。コントローラー#new編

今回は、**写真とタイトルを投稿するアプリケーションのtweetsコントローラーのnewアクション(新規ツイート投稿画面を呼ぶ)が問題なく動くかどうか、Rspecという言語を使って**テスト。

spec/controllers/tweets_controller_spec.rbに、**擬似的にnewアクションを起こすリクエストを飛ばして、ちゃんとnewアクションに対応したビューが返ってくるかな?**というテストコードを記述。

コントローラーのテストをする際は、2つの点に注意。
①tweets_controller.rbに、テストしたいアクションに対して、before_actionが定義されていないこと。
②gem ‘rails-controller-testing’をインストールしよう。

では、見ていきましょう。

“`ruby:tweets_controller_spec.rb
require ‘rails_helper’

describe TweetsController, type: :controller do
describe ‘GET #new’ do

元記事を表示

github actions rspec

### 成果物

“`yml:.github/workflows/ruby.yml
name: Ruby

on: [push]

jobs:
build:

runs-on: ubuntu-latest

services:
postgres:
image: postgres:10.3
ports: [“5432:5432”]
options: –health-cmd pg_isready –health-interval 10s –health-timeout 5s –health-retries 5
steps:
– uses: actions/checkout@v1
– name: Set up Ruby 2.5
uses: actions/setup-ruby@v1
with:
ruby-version: 2.5
– name: Install PostgreSQL client
run: |

元記事を表示

Rack入門 Rack Middleware編 (3/3)

[前回](https://qiita.com/nishio-dens/items/852d7604b34d20514a70) は、Rackのプロトコルを理解するために簡単なアプリを作りました。
今回はRackの重要な概念であるRack Middlewareについて学びます。

## 目次

1. [Rack入門 概念編(1/3)](https://qiita.com/nishio-dens/items/e293f15856d849d3862b
)
1. [Rack入門 Rack Application編 (2/3)](https://qiita.com/nishio-dens/items/852d7604b34d20514a70)
1. [本記事] [Rack入門 Rack Middleware編 (3/3)](https://qiita.com/nishio-dens/items/8011842f50995f46eafe)

## Rack Middlewareとは

はじめにややこしいことを言いますが、Rackはミドルウェア(Middleware)です。
アプリサーバーとフレーム

元記事を表示

Rack入門 Rack Application編 (2/3)

[前回](https://qiita.com/nishio-dens/items/e293f15856d849d3862b) はRackが必要とされた背景と、基本的な概念について説明しました。
今回は実際にRackプロトコルを使いアプリサーバーと通信するプログラムを作りながら、Rackに関する理解を深めていきます。

## 目次

1. [Rack入門 概念編(1/3)](https://qiita.com/nishio-dens/items/e293f15856d849d3862b
)
1. [本記事] [Rack入門 Rack Application編 (2/3)](https://qiita.com/nishio-dens/items/852d7604b34d20514a70)
1. [Rack入門 Rack Middleware編 (3/3)](https://qiita.com/nishio-dens/items/8011842f50995f46eafe)

## Hello Rack Application

基本を理解するために、簡単なRackアプリケーションを作っ

元記事を表示

Rack入門 概念編 (1/3)

RailsやSinatraなどのRuby製Webフレームワークを利用されている方は、Rackというキーワードを一度は目にしたことがあるのではないでしょうか。

よく聞くけど詳しくは知らない、そんなやつがRackです。

今回は自分の知識の整理も兼ねて、Rackとは何ものなのかについて調べたメモを、ここに残します。長かったので、全3回に分割しています。

## 目次

1. [本記事] [Rack入門 概念編(1/3)](https://qiita.com/nishio-dens/items/e293f15856d849d3862b
)
1. [Rack入門 Rack Application編 (2/3)](https://qiita.com/nishio-dens/items/852d7604b34d20514a70)
1. [Rack入門 Rack Middleware編 (3/3)](https://qiita.com/nishio-dens/items/8011842f50995f46eafe)

## Rackとは何か。ひとことで

– Webアプリケーションサーバーとアプリ

元記事を表示

OTHERカテゴリの最新記事