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

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

railsのActiveRecordで最新のレコード1件取得する

#はじめに
Ruby on Rails 2 Advent Calendar 2019の17日目の記事になります!
railsで最新レコード1件を取得する方法についての紹介です。(小ネタです。)

##最新のレコード1件取得する
ユーザーテーブルで直近で更新されたレコード1件を取得したい・・・
そんな場合は以下のコードになります。

“`
#モデル名はUser
@user = User.order(updated_at: :desc).limit(1)

#例えば最新登録ユーザーを5名取得したいなどの場合は以下でデータを取得できます。
@user = User.order(created_at: :desc).limit(5)
“`

#まとめ
この記事で誤っている箇所や追記したほうが良い点がありましたらコメント欄などでご指摘いただけますとありがたいです!
普段はSQLを使っているのでActiveRecordになれたいところです。

元記事を表示

サンプルコードでわかる!Ruby 2.7の主な新機能と変更点 Part 2 – キーワード引数に関する仕様変更

## はじめに
Rubyは毎年12月25日にアップデートされます。
Ruby 2.7については2019年11月23日にpreview3がリリースされました。

[Ruby 2\.7\.0\-preview3 リリース](https://www.ruby-lang.org/ja/news/2019/11/23/ruby-2-7-0-preview3-released/)

この記事ではRuby 2.7で導入される変更点や新機能について、サンプルコード付きでできるだけわかりやすく紹介していきます。

ただし、Ruby 2.7は多くの新機能や変更点があり、1つの記事に収まらないのでいくつかの記事に分けて書いていきます。
本記事で紹介するのはキーワード引数に関する仕様変更です。

### キーワード引数以外のRuby 2.7の新機能や変更点はこちら

Ruby 2.7ではパターンマッチ以外にもさまざまな新機能や変更点があります。
それらについては以下の記事で紹介しています。こちらもあわせてご覧ください。

– [サンプルコードでわかる!Ruby 2\.7の主な新機能と変更点 Part 1 \-

元記事を表示

【Rails】Sprockets概要

#Sprockets概要
Asset Pipelineの基盤。
Assetファイルはjs、css、image等の直接railsに関わらないファイルを管理するために導入されているライブラリ。

##Sprocketsの役割

– Assetファイルへのパスの管理
– Assetファイルの圧縮
– Assetファイルの結合
– Assetファイル間の依存性の解決
– Assetファイルのコンパイル

##Assetの読み込み

Sprockets次のマニフェストファイルを読み込み、Assetを読み込む。
“app/assets/stylesheets/application.css”
“app/assets/javascripts/application.js”

マニフェスト定義は次のコードにあるようにコメントアウトして「ディレクティブ=引数」と書く。
.cssも.jsも同じようにコメントアウトの後に書くようにする。

“`app/assets/javascripts/application.js

//= require rails-ujs
//= require actives

元記事を表示

SlackでTwitterがやりたい!

# はじめに
Slackアドベントカレンダー17日目です!
今回は,業務中にもTwitterをするために,Slack上でTwitterを行うためのSlack Appを実装してみます.

**できたもの**
今の所Slack上から以下の機能が使用可能です.
前日に咳き込みながら急ピッチで作ったので,これだけで勘弁してください(^_^;)

– タイムラインの閲覧
– tweet
– favo
– リツイート
スクリーンショット 2019-12-17 3.01.46.png

Slack上のフォームにメッセージを入力し送信すると,Tweetが投稿されます.

スクリーンショット 2019-12-17 5.50.40.pngRails6 ログアウト機能作成中にルーティングに問題ないのにエラーが出た話

# 目的

– ログアウト機能作成中にルーティングに問題は無いのにルーティングエラーが出た時の話をまとめる。

# 結論

– ログアウトボタンを押下した時の設定で`method`を`post`に指定していなかった。

# エラーまでの経緯

– ログアウト機能を作りたかった。
– Bootstrapを用いたheaderにログアウトボタンを作成し、押されるとルーティング経由でコントローラのアクション内で `session[:user_id]`に`nil`を入れてログアウト処理を行うものだった。
– 下記に各ファイルの一部の抜粋を記載する。
– headerのビュー

“`

“`
– ルーティング

“`
post “logout” => “users#logout”
“`

– コントローラのアクション

“`
def logout
session[:us

元記事を表示

rbenvからRubyまでのInstall

#備忘録
こんにちは!はじめまして!
完全なる備忘録として投稿致します。
ご覧になられた方の参考になれば幸いです。

##環境
– Windows10
– vagrant (boxはbento/centos-6.8)
– virtulbox
– centos

##インストール
rubyをインストールするために必要なツール各種。
流れとしては、
git→rbenv→rubyという手順。
バージョンなどこだわりがないのであれば、ドットインストール様の開発環境を整えようの講座で全て整う。
1からやりたい方は↓
https://github.com/rbenv/rbenv
##いよいよ!
rbenvがインストールできたら、
いよいよ、
“`ruby
sudo yum install ruby
“`
これで、何とかvagrantでRubyが使える。

##後記
バージョンにこだわらないのであれば、これで十分に使える。
まずは、rbenvでRubyの開発環境を構築してから、Rubyをインストールする流れ。
(ですます調が揃っていないのはご愛敬。。。あくまで備忘録です)

元記事を表示

Pay.jp導入手順~ユーザー登録と同時にカード情報を登録する方法::Ralis~

## はじめに
### 目的
Payjpを導入し、ユーザー登録と同時にカード情報を登録する
### 前提
– Railsでの実装
– deviseの導入が済んでいる
– hamlでの記載(gem ‘haml-rails’)をする

注:フリマアプリのコピーサイト作成の為、ビュー(詳細)は省略します
  また、登録画面はウィザードを使用しています
## 全体の流れ
– Payjpのアカウント作成
– gem ‘payjp’導入
– gem ‘dotenv’導入*しなくてもいい
– payjp読み込みの記述
– viewの設定
– JavaScriptの作成
– modelの作成
– コントローラーの設定
– ルーティング設定
– 登録の確認
– 次回 => 購入手順

## 1.Payjpのアカウント作成
Payjpの公式HPへとび、アカウントを作成する
https://pay.jp/
作成後、サイドバーのAPI内にあるキーを見つける

スクリーンショット 2019-12-16 23.23.58.pngCould not find generator ‘factory_bot:model’. でファクトリが作成できないとき

## ファクトリが作成できない

コマンドが見つからないようで、実行できない。。

“`console
$ rails g factory_bot:model user
Running via Spring preloader in process 81847
Could not find generator ‘factory_bot:model’.
Run `rails generate –help` for more options.
“`

## 解決策

古いプロセスに接続していることが原因でした。
下記で停止して、

“`console
$ spring stop
“`

もう一回ファクトリを作成すると、

“`console
$ rails g factory_bot:model user
Running via Spring preloader in process 89115
create spec/factories/users.rb
“`

成功しました!

## おまけ:springはアプリケーションプリローダー

>Springと

元記事を表示

AtCoderコンテスト開催時間のn時間前にSlackへ通知

# はじめに
AtCoderコンテストの日時を忘れることが多々あったので,AtCoderコンテスト開催時間のn時間前に通知するBotを作成しました.
(タイトル詐欺っぽいですが,今回は1時間前と24時間前に通知してくれます.n = 1 or 24です.)
(また,後々述べますが,0分ぴったり開始のコンテストでないと通知してくれないという致命的な仕様となっています.)

スクリーンショット 2019-12-14 20.53.06.png

ソースは[GitHub](https://github.com/EisKern/notification-slack-atcoder-date)に全て公開しています.
RubyでスクレイピングとSlackへ通知を行う処理を書き,それをGitHub Actionsで毎時0分に定期実行

元記事を表示

RailsのAPIでリクエストに冪等性を持たせられるように実装してみた

この記事は[ギルドワークスのアドベントカレンダー](https://adventar.org/calendars/4265)の17日目です。

業務で冪等なAPIの実装を行う場面があったので、そのとき調べたものをまとめてみます。

## 冪等とは(冪等性と安全性)
[Webを支える技術(7章:HTTPメソッド)より](https://www.amazon.co.jp/dp/4774142042/ref=cm_sw_em_r_mt_dp_U_Dgd9DbWPZG8JK)

冪等:ある操作を何回行っても結果が同じになること
安全性:操作対象のリソース状態に変更を加えないこと

| |安全性あり |安全性なし |
|:—:|:—:|:—:|
|冪等 |GET、HEAD |PUT、DELETE |
|冪等ではない | |POST,PATCH |

## 冪等なAPI
[Stripeのブログ記事](https://stripe.com/jp/blog/idempotency)を読んで、冪等なAPIの設計について調べてみました。

### すべてのAPIのリクエスト

元記事を表示

Capistrano自動デプロイ中の「ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key」エラー

こんにちはこんばんは!
駆け出しエンジニアバンドマンのミナミ(@minami_genkiboy)です。

今日もハマりにハマったエラーを共有します。

# 作業環境
・ruby on rails 5.2.4
・AWS EC2
・nginx
・unicorn
・MySQL

# 経緯
現在取り組んでいるのはメル○カリのコピーアプリ作成。

capistranoで自動デプロイを行うため、ローカル環境で以下のコマンドを実行しました。

“`
$ bundle exec cap production deploy
“`

ターミナルとにらめっこしながらデプロイの進行状況を固唾を飲んで待つこの時間。

極度の緊張により寿命が縮んでいくのが分かります。

イヤ〜な予感にさいなまれ、満を持して、ほらきた!

真っ赤な字で

**DEPLOY FAILED!**

何度見ても慣れないものです。

内容はこちら↓

“`
02:27 unicorn:start

01 master failed to start, ch

元記事を表示

【Rubyの学習記録】Progate→ちょっと背伸びしてみた【関西弁丸出し】

#はじめに
はじめまして、はまだみつるです。現在、障害者支援の仕事をしながら【Ruby on rails】の学習をしています。将来的には、プログラミングの知識や技術を使って、福祉業界をよくしたいと思っています。

僕は、今年に入ってからガッツリとプログラミングの勉強を始めました。ただ、自分の興味の赴くままに流されて、あっちにいったりこっちにいったり・・・と、いろいろなことに少しずつ挑戦しては、また別のことに挑戦・・・という日々でした。

ただ、ある日これではアカンと思い立ち、勉強するものをちゃんと定めようと思ったのです。
そして、なんやらかんやら調べているうちに、Progate(https://prog-8.com/ )やかみざとよしとさんのサロンを知り入会。【Ruby on rails】とやらに本気で取り組んでみようと。
そしたらまぁ難しいこと。そんで、面白いこと。どんどんハマってしまいました。

今回は、そんなRubyはおろかプログラミング自体をあまりよくわかってない超初心者が、環境構築から何から何までをやってみたことについて、記録程度に書いていきたいと思います。
僕みたいなスター

元記事を表示

一部のviewでしか、表示させたくないものがあるときの対処法 if

## URLごとに表示を変えたいとき

request.path.include?()を使うと良い。()の中の文字がURLに入っているかいないかを判断する。

“`erb

<%if request.path.include?("mypage")%>
 

<%end%>
“`

参考 https://qiita.com/Yohei_Shiina/items/ed39dfd74895d54f3cf2

元記事を表示

DXRuby 1.4.6 をWindows10で使う時の注意点とインストール方法

Windows向けのRuby用2Dゲームライブラリ「DXRuby」をWindows10で使う場合、いろいろとハマったので、注意点のメモです。

・[DXRuby HP](http://dxruby.osdn.jp)
・[DXRuby GitHub](https://github.com/mirichi/dxruby)

# 注意点
## ・ DXRubyは、Windowsでないと動かない
WindowsのDirectXを使うので、macOS、Linuxでは動きません。
Windows環境以外で、DXRubyとほぼ同じコードで動くようにするライブラリとしては、[DXOpal](https://yhara.github.io/dxopal/doc/ja/index.html)(ただし、完全互換ではない)などがあります。

## ・ DXRubyは、32bit版Rubyでないと動かない
64bitマシンのWindowsであっても、Rubyは32bit版にしないとDXRubyは動きません。
Rubyのインストールには、[「RubyInstaller for Windows」](https:/

元記事を表示

deviseのForgot your password?や”ログイン”などを日本語化する方法

#背景

などの記事を参考にしてdeviseの日本語化を行ったところ、ログインや新規登録画面のflash noticeやカラム名などが自動で日本語化されたが、Forgot your password?や送信ボタンの下の文字(ログインや新規登録等)が英語のままであんまりこれらを日本語化する記事が無かったので以下に方法をまとめた。

#日本語化
deviseの新規登録画面を例にとって説明する。ログイン画面なども同様に変更できる。

“`ruby:app/views/devise/new.html.erb

Sign up

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
<%= render "devise/shared/error_messages", resource: resource %>

puma のコードネームが面白い

みんな使ってるRubyのWebサーバー[puma](https://github.com/puma/puma)ですが、[マイナーバージョンごとに振られるコードネーム](https://github.com/puma/puma/releases)が面白いので抽出してみた。

コードネームは[定数ファイル(`lib/puma/const.rb`)](https://github.com/puma/puma/blob/master/lib/puma/const.rb)に書かれてるっぽいのでバージョンごとにそのファイルを調べてみる。

“`sh:shell
git tag –list |
ggrep -E “v\d.+\.0” |
sort –version-sort|
xargs -I ver sh -c “git –no-pager show ver:lib/puma/const.rb”|
ggrep -E ‘^\s+(CODE_NAME|PUMA_VERSION)\s+=.+’|
ggrep -oP ‘(?<=").+(?=")' ``` このシェルスクリ

元記事を表示

【Ruby】名前空間の作成 トップレベルのクラスを名前空間の中で定義したメソッドから呼び出す

同名クラス名や同名メソッドを扱いたい場合に、「名前空間」を定義して区別することができる。

次のコードでは同名クラスに同名のメソッドが定義されている。
名前空間を切っていないため実行結果は次のようになる。

“`ruby:
class Greet
def say_hello
puts “hello”
end
end

Greet.new.say_hello

class Greet
def say_hello
puts “こんにちは”
end
end

Greet.new.say_hello

#=>
hello
こんにちは
“`

上記のクラスとメソッドを区別するため、モジュールの構文の中でクラスを宣言する。
名前空間を利用する場合、「モジュール名 + :: + クラス名」 とする。

“`rb:
module Usa
class Greet
def say_hello
puts “hello”
end
end
end

module J

元記事を表示

rails swiper(画像のスライド)

よくWebサイトでみる画像のスライダー機能を実装する

##完成品
[![Image from Gyazo](https://i.gyazo.com/6fbe22c2695c78e81707c7e8b3c26583.gif)](https://gyazo.com/6fbe22c2695c78e81707c7e8b3c26583)

##環境
ruby:2.5.1
rails:2.5.3
DB:mysql(Sequel Pro)
ブラウザ:Google
OS:Mac(10.14.6)

##Github
https://github.com/tana1818/frutweet2

##スライダーとは
スライダー(カルーセルともいう)とは、Webサイトのスライドショーを表す用語。
よく使われるのはWebサイトのメインビジュアルで、小スペースで企業が提供したい情報を組み込むことができるので、多くのサイトで実装されている。
イメージこんな⬇︎
https://shop.spiegelau.co.jp/
https://www.matchnews.com/
https://reclasy.jp/

元記事を表示

AWS Lambda(Ruby)でgemをrequireしようとすると「cannot load such file ….」

表記のときの原因の1つをメモ。

「Ruby 2.5系以外で bundle install」した資材をアップロードすると表記エラーとなる…。
普段の作業用のバージョンは当然2.6以上なので、別のディレクトリでLambda用のスクリプトを作成して作業したときに `.ruby-version` を設置し忘れてそのまま作業、アップロードして小一時間ハマった…。

元記事を表示

bundleができない時の対処法

## 環境
* rails 5.2.3
* ruby 2.6.3
* rbenv 1.1.2

## エラー内容

railsで、bundleをしようとしたところ

“`
Users/user/.rbenv/versions/2.6.3/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require’: dlopen(/Users/user/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-darwin18/openssl.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /Users/user/.rbenv/versions/2.6.3/lib/ruby/2.6.0/x86_64-darwin18/openssl.bundle
Reason: image not found – /Users/user/.r

元記事を表示

OTHERカテゴリの最新記事