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

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

Rails devise + google_oauth2 でログイン後のリダイレクト先を指定

# applictaion_controller.rbではリダイレクト処理したくない

理由は特にない。気分の問題。

# omniauth_callbacks_controller.rbに書く

“`rb:app/controllers/chichinpuipui/omniauth_callbacks_controller.rb
def google_oauth2


end

protected

#ログイン後のリダイレクト先
def after_sign_in_path_for(resource)
itaino_itaino_tondeke_path
end
“`

google_oauth2メソッドより上にprotected書くとエラーになるので注意。

元記事を表示

WebMockを使って外部API接続をスタブ化する

# 概要
APIはJavaで実装して、Javaから返ってきたjsonをRailsで受け取ってRails側でそのjsonデータを表示するという流れにしたく、Railsの実装をしている時のテストや、いちいちJavaを起動させなくていいようにスタブ化したのが目的です。

[Rails開発でWebMockを使ってAPIアクセスをスタブ化する](://dev.classmethod.jp/server-side/rails-development-with-webmock/)からのコードを引っ張ってきただけなので、リンク先の解説みた方が断然わかりやすいです。

# 実際のコード
“`ruby:api_stub.rb
module ApiStub
require ‘webmock’

WebMock.enable!
# アプリケーションコードに`call_get_api`という名称の外部API呼び出し実装を含むメソッドがあることして、ここで同名のメソッドを作成してstub登録します。
def call_get_api
WebMock.stub_request(:any,

元記事を表示

Rails 6ではsend_data/send_fileメソッド呼び出し時にERB::Util.url_encodeは不要です

## Rails 6にアップグレードすると発生する問題
Railsでファイルダウンロード機能を実装するときは`send_data`メソッドや`send_file`メソッドがよく使われます。
このとき、ファイル名に日本語(正確には非ascii文字)が含まれていると、IEやEdgeで文字化けします。
そのため、Rails 5.2以前では以下のように`ERB::Util.url_encode`メソッドを使って文字化けを防いでいました。

“`ruby
class FooController < ApplicationController # ... def download # ... # Rails 5.2以前ではurl_encodeをかけないと、IEやEdgeでダウンロードしたときに # `縺ォ縺サ繧薙#.txt`のようなファイル名になってしまっていた send_data(your_data, filename: ERB::Util.url_encode('にほんご.txt'), disposition: 'attachment') en

元記事を表示

カラムを追加してpgからschemaにdumpさせてみました

##記録用

railsでgenerate migrationコマンドを使って、自動的に作成していましたが、その方法で作成しない方針だったため、migrationファイルからDBにカラムを追加したり、コメントを入れたり、schemaディレクトリにバックアップファイルを作成してその中にdumpさせました。

完全に理解していないですが、記録用と手順ややったことを忘れないためにも残しておきます。

##migretionファイルでカラムの追加

###カラムの追加

“`
ALTER TABLE テーブル名 ADD COLUMN カラム名 データ型 型名 ;
COMMENT ON TABLE テーブル名 IS ‘コメント’;
“`

###SQLで確認
“`
\d (テーブル名)
\d+ でコメントも確認することができる
“`

列 | 型 | 修飾語

↑のような形式で追加したカラムを確認することができる

##schemaファイルにdumpするとき

データベースを指定してダンプする場合は、pg_dumpを使用する

“`
pg_dump DB名 –schem

元記事を表示

【Rails】 DataTables 動的にカラムを変更する方法

# はじめに
Railsアプリケーションで DataTables を使う方法を以前にまとめさせていただきました。
DataTables を使ったテーブルのカラムを動的に変更したい需要があると思いますが、まとめられている記事を見かけませんでしたので、こちらにてまとめさせていただきます。
この方法を理解していれば、開発時間を極端に減らして高機能なテーブルを提供することができます。

なお、今回の方法は少し強引にカラムを動的に変更しています。
もし、もっといい方法があるということをご存知の方はコメントをいただければ嬉しいです。

# 動的にカラムを変更する方法
## 前提条件
下記リンクにてDataTablesを実装していること。
このリンク先のコードを元にして、動的にカラムを変更する方法をこちらの記事にて特記したいと思います。

* 【Rails】DataTables 実装方法
* https://qiita.com/syukan3/items/5ac9f0d1b43334b5eb13

## 値を変更する方法
動的にカラムを変更するには、“`users.coffee“`のコー

元記事を表示

[bundler: command not found: unicorn_rails Install missing gem executables with `bundle install]AWSのEC2サーバ上でRailsに追加したgemfileが反映されない時の解決例

<エラー文>
スクリーンショット 2020-01-21 7.03.08.png

#このエラーの原因で考えられること
local環境でしかgemfileが反映されていないことが考えられます。
具体的には下記のことにより起こっていると考えられます。

1.rbenvのrehashし忘れ
2.bundlerの入れ忘れ
3.githubへの反映し忘れ(commitとpushのし忘れ)

#解決方法

####1.rbenvのrehashし忘れ
rbenv(rubyの環境構築)について更新をすれば解決します
EC2サーバー上で下記のコマンドを入力してください

“`
[ec2-user@ip-xxx-xx-xx-xxx chat-space$ gem install bundler -v 2.0.2]$rbenv reh

元記事を表示

rails+froalaエディタ使用の注意

表示させる部分にはクラスに’fr-view fr-element’を付ける

froalaエディタは、とても高機能のエディタである。

ブログアプリで使用するとき、form画面ではとくに問題ないが、その内容を表示させるときに思うように表示されないときがある。
それは、form画面ではデフォルトで

“`

“`

で囲まれているが、表示させるときはない。
画像の左寄せ、中央寄せ、右寄せの機能がうまく表示されないのはこのせいである。
なので表示させたいページで同じようにdivで囲めばよい。

元記事を表示

Webサービスをインターネットに公開する(cloud9からHerokuにデプロイ)

##Herokuについて
– [https://jp.heroku.com](https://jp.heroku.com)
– Paas(Platform as s Service)と呼ばれるクラウドサービス
– 元々、Rubyのアプリケーションをホスティングするサービス
– PHP等、他の言語にも対応

## デプロイの準備
**設定箇所**
1. Gemfile
2. config/database.yml
3. config/environments/production.rb
4. config/routes.rb

**1.Gemfile**

Gemfileにあるgem’sqlite3’を切り取って group :development, :test doに貼り付ける
gem ‘pg’, ‘~> 0.18.4’を追加する

“`ruby:Gemfile
group :development, :test do
# Call ‘byebug’ anywhere in the code to stop execution and get a debugger consol

元記事を表示

Rubyでゲームを作ってみた #1

# Rubyで簡単なゲーム作成
プログラミング超初心者ですが、学んだことを最大限に活かして、トランプのブラックジャックを作成していきたいと思います。

## 準備するもの
・トランプ(52枚)
・マーク(4種類)
・数字(1→A 11,12,13→J,Q,Kに変換)
・数字(合計するため)

## ブラックジャックのルール
・カードを2枚引く
・J,Q,Kは全て10として扱う
・Aは引いた際に1or11が選択可能
### 1.初期設定

~~~ruby
deck = [*(1..52)]
hand_mark = []
hand_number = []
hand_figure = []

draw(deck,hand_mark,hand_number,hand_figure)
draw(deck,hand_mark,hand_number,hand_figure)
~~~
まずは配列を定義します。
トランプ52枚の配列、マーク、数字、合計の3つの配列は空で定義します。
そして、2回引く処理です。引数として、各配列を引数とします。
### 2.カードを引くメソッドの定義

~~~r

元記事を表示

2020年 ITカンファレンスまとめ

#2020年に開催されるITカンファレンス
1月20日時点のまとめです。
随時、更新していくので更新されていたら、コメントで教えてください。

#言語
##PyCon JP
Pythonに関するカンファレンス
日程: 8月28日、29日の予定
場所: 大田区産業プラザPiO
[公式サイト](https://www.pycon.jp/)

##PHPカンファレンス
PHPに関するカンファレンス
日程: 10月11日
場所: 大田区産業プラザPiO
[2019公式サイト](https://phpcon.php.gr.jp/2019/)
[2020公式サイト](https://phpcon.php.gr.jp/2020/)

##PHPkaigi
PHPに関するカンファレンス
日程: 2月9日 16:30〜
2月10日 10:00〜
2月11日 10:00〜
場所: 練馬区立区民・産業プラザ Coconeriホール
[2020公式サイト](https://phperkaigi.jp/2020/)

##JSConf
JavaScriptに関するカンファレンス
開催不明
去年
日程:1

元記事を表示

初学者によるプログラミングMemo #17 scanメソッド

#はじめに
今回はscanメソッドを使用するお話です
なお、本記述はMacにおいて、Railsでの開発を前提としています
また、まだまだひよっこですので、不備等ございましたらご指摘いただけると幸いです

#目次
– “scan”メソッドについて
– 正規表現での特徴

##”scan”メソッドについて
scanメソッドは「ある文字列に対して、マッチさせたい文字を指定し、マッチした部分文字列を配列として返す」メソッドです
使い方を具体的に見てみましょう

###基本

“`.rb
“調べる元となるの文字列”.scan”調べたい文字列(or正規表現)”
“`

以下のような記述があるとします

“`sample1.rb
word = “foobar”

p word.scan(/ba/)
# p word.scan(“ba”) これも同じ結果

=> [“ba”]
“`

結果として得られるのは[“ba”]です
文字列を変えてみましょう

“`sample2.rb
key = “foobarbarbazz”

p key.scan(/ba/)

=> [“ba”, “ba”, “

元記事を表示

devise ユーザーのプロフィール画面作成と編集(デフォルトをカスタマイズ)

# はじめに
deviseを導入の仕方を学び、デフォルトのままだとユーザーフレンドではないと思い、deviseのカスタマイズをしようと思います。

**・sign up(アカウント登録)時にユーザーの名前も一緒に登録!
・users/showで「名前」「メールアドレス」「プロフィール」の表示!
・users/editで簡単編集!**

上記の3つについて、rails初心者目線で書いていきたいと思います。
## 完成イメージ
スクリーンショット 2020-01-20 17.57.35.png
スクリーンショット 2020-01-20 18.10.25.pngDockerを使ってRuby2.7&Rails6を構築

# はじめに
2020/01/20時点での最新安定版のrails開発環境の構築の記事がなかったので。

[【Imagemagick対応】Dockerを利用して、Rails環境を作成](https://qiita.com/NA_simple/items/5e7f95ae58eec5d20e1f)

基本上記の記事のままです。
ただ、上記の記事はRuby2.6&Rails5.2.2で、そのままバージョンを書き換えるだけではうまく動作しなかったので、動作できるようにしたインストール資材を記載しておきます。
参考までに上記記事からの変更点も記載しておきます。

コンテナ立ち上げ以降は参考記事の手順のまま実施できます。

# インストール資材
## Dockerfile
“`:Dockerfile
FROM ruby:2.7

ENV RUNTIME_PACKAGES=”linux-headers libxml2-dev libxslt-dev make gcc libc-dev nodejs tzdata postgresql-dev postgresql” \
DEV_PACKAG

元記事を表示

【Ruby】3文字の時だけ「遊☆戯☆王」みたいに出力されるアルゴリズム

# はじめに
最近、遊戯王のゲーム実況をみながら寝落ちするのが日課です。
ある日、Rubyいじってたら、な ぜ か 「遊☆戯☆王」みたいに文字の間に☆入れたいなーって思ったんです。
こんなことをアルゴリズムの記事とか言って書いている自分のアルゴリズム、コレガワカラナイ。

# 問題のソースコード
“`ruby
keywords = [“遊戯”,”海馬”,”木馬”,”羽蛾”,”城之内”,”本田”,”杏”,”エクゾディア”]

keywords.each do |keyword|
sleep 0.2 # 1行だすごとに一旦休憩する(なんとなく)
if keyword.length == 3 #3文字であればの判定をしている
k = keyword.chars #1文字ずつ分割する
puts k.join(“☆”) #文字を☆でつなぐ(オサレ)

else
puts keyword #3文字出ない場合はそのまま表示
end
end
“`
出力するとこんな感じになります。

“`console
遊戯
海馬

元記事を表示

初級者向け アルゴリズムを解説(1)

# 初級者向け アルゴリズムを解説(1)

 これからアルゴリズムについて解説をしていきますが、こちらの解説はプログラミング初級者(「最近プログラミングを始めました!!」向けになります。また数回のシリーズに分けてプログラミングで使用されるアルゴリズムを解説していきます。なお、次回からRubyのコードが出てきますが、簡単なメソッドを使用してコーディングする予定です。
※このシリーズは「アルゴリズムを、はじめよう(著:伊藤静香)」を参考にしております。
## アルゴリズムとは
 はじめにアルゴリズムについて、簡単に説明します。
 そらく、アルゴリズムと聞くと、プログラミング・難しい..と考える方もいるかと思いますが、アルゴリズムを端的に言えば「手順」です。但し、ただの手順ではなく、「問題や課題を解決するための手順を表現した考え方やアイディア」です。
 実は我々の身の回りにも様々なアルゴリズムが使用されています。例えば、「お菓子のレシピ」、これにもアルゴリズムが使用されており、必要な材料とその量、また調理法がレシピに記載されています。そのレシピ通りに作れば誰でもお菓子が作れるようになっている

元記事を表示

秀丸からRubyを呼び出して、選択範囲を加工する

#秀丸からRubyを呼び出して、選択範囲を加工する

###利用環境
秀丸エディタ 32bit Ver8.89 (2020/1/20時点最新)
[RubyEval for 秀丸マクロ Ver.0.02](https://hide.maruo.co.jp/lib/macro/rubyevalmac_002.html)

###概要
筆者は、25年らいの秀丸エディタのユーザーだ。
今は、フリーでも同等機能のエディタがあるらしいし、unix畑の人はViライクをお使いであろうか
さて、上でRubyEval for 秀丸マクロ Ver.0.02は、2005年に公開されたマクロで15年前のものであるが
いまだ現役バリバリに愛用させていただいている。
秀丸エディタ上で選択した文字列を、Rubyのソースコードロジックで変換して返す
いろいろ応用範囲が広い。
是非、秀丸ユーザーには使ってみて欲しい
いくつかサンプルを紹介する。

###ソースコード例
重複行を削除して排除、ユニーク行をゲットする 秀丸連携

“`uniqueGet.rb

#——————————

元記事を表示

Erubi とは何か

Qiita には Ruby on Rails の記事が 2 万本以上あるのに,Rails で使われているライブラリー Erubi の記事ほぼゼロ。
Erubi とは何なのか。

# まず eRuby について

Rails を少しでもかじったことがあれば,eRuby というテンプレート言語を知っていると思う。いや「eRuby」という名称に馴染みがなくても,拡張子が `.erb` のアレと言えば分かるだろう。テキストに Ruby のコードを埋め込むテンプレート言語の名称だ。

読み方はおそらく「イー・ルビー」で,「e」は embedded(埋め込まれた)の頭文字。

データに基づいて HTML を生成するのによく使われるが,対象となるテキストは HTML に限らない。テキストであれば何でもいい。

実際,Rails では,例えば config/database.yml なんかは eRuby で記述されている。拡張子は単に `.yml` だが,

“`erb
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
“`

なんて行がある

元記事を表示

[Ruby] Hash で Value を昇順にする時 Key も昇順にする

# どういう並べ替えをする方法なの?

value を昇順に並べ替えた上で、 同じ value を持つ key についても昇順にする方法です。

具体的には、

“`ruby:
# これを
{3: 10, 2: 20, 1: 10}

# こうする
{1: 10, 3: 10, 2: 20}
“`

方法です。

# 方法

仕組みはよく分かりませんが、いろいろ試した所出来たので投稿します。

“`ruby:
# いったん Array に変換
array = hash.to_a

# key value を同時に昇順に変換
array.sort_by! {|x| [x[1], x[0]]}

# Hash に戻す
hash = array.to_h
“`

参考:[Rubyでの安定したソート| 8番目の光](https://8thlight.com/blog/will-warner/2013/03/26/stable-sorting-in-ruby.html)

元記事を表示

【第10章】Railsチュートリアル 5.1(第4版) ユーザーの更新・表示・削除

#はじめに
個人的な理解・備忘録を目的としてます。
筆者自身は[動画版Railsチュートリアル](https://railstutorial.jp/#screencast)で進めているため、アプリ作成中コード・ブランチ名などの若干の違いがありますので参考程度に流し見して頂けたら嬉しいです。
理解不足のため、何かありましたらコメント等ご指摘してくださると幸いです(^_^;)

#10.0 目標
未実装だったedit、update、index、destroyアクションを加え、RESTアクションを完成させる。

その他 個人的進行
単数形と複数形
モデル(概念的)→単
それ以外→複数(ほぼ全部)

#10.1 ユーザーを更新する
##10.1.1 編集フォーム
編集フォームのモックアップ
([公式](https://railstutorial.jp/chapters/updating_and_deleting_users?version=5.1#cha-updating_showing_and_deleting_users)より参考)

![スクリーンショット 2020-01-17 13

元記事を表示

【Rails】Pryを使ったメソッドのデバッグ方法

Rails案件で「pry」を使って実装したメソッドをデバッグする機会があったので、使い方の備忘録

## pryとは

REPLで対話的にプログラムを実行したり、ActiveRecordを利用したDB操作や、変数の中身を調べることができるコマンドラインツール
※ Laravelで言うところの「tinker」とほぼ同じような使い方ができる、超便利なデバッグツール

## サンプル
サンプルとして、以下のメソッドを例に解説

“`ruby:app/lib/utils/test_sample.rb
module Utils
module TestSample
class << self def sample_method(param) data = [1, 2, 3, 4, 5] data.each do |r| if r == param return true end end return false end

元記事を表示

OTHERカテゴリの最新記事