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

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

【Rails】jquery を使わずに javascript で flashメッセージをフェードアウトさせる

# はじめに
Railsアプリを開発していてflashメッセージをフェードアウトさせたく、javascriptを用いて実装したので書く。

こういったやつ↓↓(Bootstrapのalertを適用させています)
スクリーンショット 2020-07-04 8.59.20.png

これをフェードアウトさせる

# 環境
Ruby: 2.5.1
Rails: 5.2.4.2

# 実装

実装イメージとしては徐々に透明度を高くしていき、最終的に非表示にします。

要素のstyle属性
①opacityの値を減少させていく
②opacityが0になったらdisplay: none; にする

## viewファイル
erbはこのようになっている

“`_flash_messages.html.erb
<% flash

元記事を表示

[Rspec]更新前のデータに対するmethod呼び出し確認テストでハマった

ある特定のモデルインスタンスがupdateされた時にafter_updateで呼び出したmethodの中で、更新前のrelation関係にあるmodelに対してmodel_methodが呼ばれているか確認するテストで結構ハマったので備忘録

“`ruby:model.rb
after_update :hoge_method

def hoge_method
old_fuga = Fuga.find_by(id: fuga_id_before_last_save)
fuga&.model_method
old_fuga&.model_method
end
“`

こういうのがあったとして、fugaに対する呼び出しのチェックは、これでいけた

“`ruby
let!(:hoge) { create :hoge }
let(:fuga) { create :fuga }
it ‘invokes model_method of the related fuga.’ do
allow(fuga).to receive(:model_method)
hoge.updat

元記事を表示

名古屋で開催されいている技術イベント・勉強会

## はじめに
この度、名古屋を離れ、関東へ引っ越すことになりました。名古屋(東海圏)エンジニアを増やして地元を盛り上げていくという夢が叶わなくなってしまいました。

名古屋でもエンジニアコミュニティを盛り上げようと頑張っている企業さんや、エンジニアさんがたくさんいることを多くの人に共有したくこの記事を書いています。

名古屋へのUターンを考えていたり、リモートができるようになり都心を離れようかなぁと考えている人は、ぜひ次の拠点として名古屋を選択に入れる参考にしてみてください。

*以下イベント情報の概要はリンクページから一部引用させていただいています。

## 定期開催編
以下、定期開催されている勉強会です。
##[Yahoo! JAPAN Nagoya](https://yahoo-nagoya.connpass.com/)
主催:Yahoo! JAPAN
概要:ヤフー株式会社の名古屋オフィスで開催するクリエイター向け勉強会コミュニティ。 多種多様なクリエイター同士が交流できる場所として、開発スキルやノウハウについて学びながら、社内外のクリエイターがアウトプット/インプットできる機

元記事を表示

Rails ポートフォリオ実装 – 要件定義 –

ポートフォリオ実装にあたり各工程ごとに、学習のアウトプットとして手順や詳細について記し共有させていただきますので、一つの例として参考にしていただければ幸いです。

<アウトプットする理由について>
・”わかった気になっている”を無くすため
・フィードバックを受ける機会を得るため
・得た情報を自分の中にしっかり定着させるため
・数多くの情報から本当に必要な情報を判断できるようになるため

<各工程>
1. 要件定義(仕様決め、ガントチャート作成)
2. 設計(画面設計、DB設計、URL設計、タスクばらし)
3. 実装(たくさん…)

上記のように、各工程で中身がいくつも分岐してくるため 3工程でも何記事かに分ける必要があるかと思います。ポートフォリオ作り終わる頃には合計で 10記事くらいで濃い内容をアウトプットしていく予定です。
また、実装部分については全てアウトプットする必要はないので、自身が難しい、または面白い、メモに残す必要があると判断した機能やエラーなどを記していきます。

#要件定義とは
> 要件定義は、本格的な開発工程の前段階で、要求をまとめ具体的な進め方を決めることです

元記事を表示

【Nuxt/Rails】axiosとdevise_token_authを使ってPOSTした実装

Nuxt.jsとRuby on Railsでaxiosとdevise_token_authを利用してPOSTする時に、地味に詰まってしまったので備忘録がてらまとめます。

## Ruby on Rails側の実装

devise_token_authの設定諸々は省きます。

以下のURLあたりが参考になりましたので、そちらをご覧いただけると良いかもしれません。

https://github.com/lynndylanhurley/devise_token_auth
https://qiita.com/Masahiro_T/items/6bc49a625b437a7c2f45

FormObjectを導入してるので、そちらも込みで載せます。

“`articles_controller.rb
class ArticlesController < ApplicationController def create @article = ArticleForm.new(art

元記事を表示

ruby メソッドの定義

アウトプット用です。
rubyのメソッド定義を簡単にアウトプットしていきます。

使用法としてはシンプル def メソッド名 
             end

例えば下記使用していないパターン

“`
puts “1”
puts “2”
puts “3”
puts “4”
puts “5”
puts “6”
puts “7”
puts “8”
puts “9”
puts “10”

puts “1”
puts “2”
puts “3”
puts “4”
puts “5”
puts “6”
puts “7”
puts “8”
puts “9”
puts “10”

puts “1”
puts “2”
puts “3”
puts “4”
puts “5”
puts “6”
puts “7”
puts “8”
puts “9”
puts “10”
“`

使用したパターン

“`
def number_count
puts “1”
puts “2”
puts “3”
puts “4”
puts “5”
puts “6”
puts “7”

元記事を表示

メッセージ送信の非同期化

# フォームが送信されたら、イベントが発火するようにしよう
スクリーンショット 2020-07-03 22.12.39.png
この記述の解説をします。
$(*****)には、formのクラス名を記述します。
.on(*****,にはイベント名を記述します。
e.preventDefaulでは、非同期通信を行う為にデフォルトのイベントを止めています。
##イベントが発火したときにAjaxを使用して、messages#createが動くようしましょう
スクリーンショット 2020-07-03 22.17.55.pngKinx ライブラリ – パーサ・コンビネータ(その1)

# Kinx ライブラリ – パーサ・コンビネータ(その1)

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。今回はパーサ・コンビネータです。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-G/kinx)
* Pull Request 等お待ちしております。

前回 [JIT ライブラリ](https://qiita.com/Kray-G/items/a237f195630f3f0a91df) を紹介しましたが、最後以下の言葉で締めくくり

元記事を表示

Rails5でECサイトを作る① ~アプリ構成、各種gem準備、Model・Routing作成~

# はじめに
先日、プログラミングスクールにてチーム実装の課題があり、ECサイトを作りました。
自分の担当したところ以外がどのようなコードで動いているのか、復習も兼ねて作ってみたいと思います。

何のお店のECサイトにするか迷いましたが、Googleフォトのアルバムにパンの写真がたくさん入っていたので、架空のパン屋さんということにします。

# アプリの概要
・ECサイト(ユーザがサイト内で買い物できる)
・ユーザサイトと管理者サイトを制作
・ユーザサイトでは会員登録してログイン後、カートに商品を入れ、注文手続きをする
・管理者サイトでは注文が入った商品の注文ステータス(入金待ち、製作中、……)と製作ステータス(着手不可、製作中、……)の変更、商品や会員の管理を行う

# アプリ立ち上げ
“`
$ rails new fumizuki # 7月なので店名(架空)は「ベーカリー文月」で。
$ cd fumizuki
“`
# Gemfileに以下を追加
“`Gemfile
# ログイン機能
gem ‘devise’

# view装飾
gem ‘bootstrap’
gem ‘jq

元記事を表示

Ruby on Rails 住所自動入力実装方法

# はじめに

現在のバージョン:
macOS Catalina 10.15.3

Ruby on Railsで住所自動入力を実装してみました。
備忘録として記述します。もし参考になれば幸いです。

# 手順

(1)はじめに下記からjsファイル(jQueryプラグイン)をダウンロード。
[jquery.jpostal.js](https://github.com/ninton/jquery.jpostal.js)

(2)ダウンロードしたjsファイルをapp/assets/javascriptsに配置。

(3)Gemfileに下記を追加後、ターミナルで“`$ bundle install“`。

“`ruby:Gemfile
# RailsでjQueryを使えるようにするため
gem ‘jquery-rails’
# 住所機能
gem ‘jp_prefecture’
“`

(4)Userモデルに下記カラムを追加後、ターミナルで“`$ rails db:migrate“`。

“`ruby:ターミナル
rails generate migration AddColum

元記事を表示

ruby on rails にて 閲覧機能をつけたい

プログラミングを初めて2週間ほどです。

NoMethodError in Todolists#index
Showing /home/vagrant/work/sample_app/app/views/todolists/index.html.erb where line #2 raised:

undefined method `each’ for nil:NilClass
Extracted source (around line #2):
1NoMethodError in Todolists#index
Showing /home/vagrant/work/sample_app/app/views/todolists/index.html.erb where line #2 raised:

undefined method `each’ for nil:NilClass
Extracted source (around line #2
1 

投稿一覧

2 <% @lists.each do |list| %> ←ここがエラー

タイトル

元記事を表示

rails capybara使用時に出たエラー

今回の目的として、以下の参考記事のように、
rspecテスト実行時にsign_inメソッドを利用できるようになることであった。
https://qiita.com/jnchito/items/a8360e5e7a829d1e19b2

そのために、railsでcapybaraの設定を試みたところ以下のエラーが出た
それぞれのエラーに参考になったリンクを貼っておく。
また、大まかな設定は次の記事を参考にさせていただいた。
https://qiita.com/morrr/items/0e24251c049180218db4

undefined method `visit’
https://qiita.com/terufumi1122/items/aefd6c965e9e946efc3b
visitはcapybaraで使えるメソッドなので、設定したうえでないと上記のエラーになるらしい

Failure/Error: fill_in ‘email’, with: user.email
Capybara::ElementNotFound:
Unable to

元記事を表示

【Rails 5.x】フリーフォントの導入方法

##フリーフォントをRailsに導入する方法
自作のポートフォリオにフリーフォントを導入したいと思い、Qiita記事を参考に導入しました。
今更感はありますが・・・備忘録かつ、
初学者の参考になればと思い、記事を作成しました。

筆者の環境
・Ruby  2.5.3
・Rails 5.2.2

#####1 フリーフォントのファイルをダウンロード

#####2 フォントファイルを app/assets/fonts 配下に置く

“`
(app名)/app/assets/fonts
“`
hogehoge.ttf ( または hoge.otf ) のようなフォントファイルを、fonts ディレクトリ内に入れます。
自分の場合はfontsディレクトリがなかったのでassets配下にmkdirで作成しました。

#####3 SCSSファイルに記述
SCSSに、

“`ruby:custom.scss
@font-face {
font-family: ‘hoge’; # font-family名は適宜決定
src: font-url(‘hogehoge.ttf’) form

元記事を表示

fullcalendarを使ってイベント管理できるものを作ろう。①準備

#fullcalendarを使ってイベント管理できるものを作成しようと思っています。
これは、RubyonRailsの勉強を兼ねてのものです。何か間違っている、こう改善した方がいい、など指摘があれば教えていただけたらと思っています。
参考書は、「現場で使えるRuby on Rails 5速習実践ガイド」です。
さあ、頑張っていこう。
##環境
OS:MacOS Catalina10.15.5
Ruby:2.6.3
Rails:5.2.4

##アプリの作成
`$ rails new Mark -d postgresql`

##モデルの作成
`$ rails g model Event`
Railsのモデルは、主に2つの要素から構成
・モデルに対応するRubyのクラス
・モデルに対応するデータベースのテーブル

クラス名とテーブル名には以下の命名規約がある。
・データベースのテーブル名は、モデルのクラス名を複数形にしたもの
・モデルのクラス名はキャメルケース、テーブル名はスネークケース

##Eventモデルの属性を設定
|属性の意味|属性名・カラム名|データ型|
|:——|:

元記事を表示

Rails Tutorial MEMO#8

#Rails Tutorial第8章
##基本的なログイン機構
本章では、ログインの基本的な仕組みを実装していく。
##8.1 セッション
HTTPはそれより前のリクエストの情報を全く利用できない、Statelessなプロトコル。故にユーザーのIDを保持しておく手段がHTTPプロトコル内「には」全く無い。
ユーザーログインの必要なWebアプリケーションでは、セッション(Session)と呼ばれる半永続的な接続をコンピュータ間(ユーザーのパソコンのWebブラウザとRailsサーバーなど)に別途設定する。
Railsでセッションを実装する方法として最も一般的なのは、`cookies`を使う方法。
###8.1.1 Sessionsコントローラ
`create`アクションにPOSTリクエストを送信すると、実際にログインする。
`destroy`アクションにDELETEリクエストを送信するとログアウトする。
Sessionsコントローラを生成する
`$rails generate controller Sessions new`
routesにリソースを追加する。

“`config/rou

元記事を表示

created_atで与えられる日時を整形する

 
sqlで生成されるcreated_atを整形するのに悩んだため、その実装方法のメモ

#sqlファイル
テーブルを作成する。

“`sql:table.sql
create table todos
(
id integer PRIMARY key,
body text,
created_at
);
“`

#rbファイル
active recordを用いて、先ほど作成したtodosテーブルをオブジェクトに結びつける。

“`rb:tlist.rb
class Todos < ActiveRecord::Base validates :body, presence: true end ```   オブジェクトをインスタンス変数に格納する。 ```rb:tlist.rb get '/' do @todos = Todos.all erb :index end ``` #erbファイル 時刻を表示してみる。 ```erb:index.erb

【Ruby理解度チェック】何が起きているか説明できますか? &&とand

面白い質問があったのでテスト形式でシェア

# 現象
“`ruby
def ampersand_return
puts “foo” && return
puts “bar”
end

def and_return
puts “foo” and return
puts “bar”
end

> ampersand_return
=> nil

> and_return
foo
bar
=> nil
“`

何が起きているか説明できますか?

# 回答
原則として、`&&`と`and`の違いはその[優先順位](https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html)にある

## `&& return`の方
`&&`が先に演算され、以下と同値になる

“`ruby
puts (“foo” && return)
“`

`”foo”`はtruthyなので、右辺の`return`が処理され、メソッドは何も出力せずreturnする。

## `and return`の方
`puts “foo”`が先に演算

元記事を表示

【Rails】hamlコード早見表

Github公式 [Haml-rails](https://github.com/haml/haml-rails)
チュートリアル [HamlTutorial](http://haml.info/tutorial.html)

# 導入

“`rb:Gemfile
# 以下を追加し`bundle install`
gem “haml-rails”, “~> 2.0”

# Rails4の場合
gem “haml-rails”, “~> 1.0.0”
# Rails3の場合
gem “haml-rails”, “~> 0.4.0”
“`

**html.erbをhtml.hamlに変換**
`$ rails generate haml:application_layout convert`
全てのerbファイルを変換する場合
`$ rails haml:erb2haml`

# HTMLコード

“`rhtml:erb

blue
blue
blue
元記事を表示

Railsでproduction環境運用する際にしたほうがいい設定

##ブラウザ上のエラー表示をdevelopmentとproduction環境で同じにする
まずdevelopment環境でERRORが発生するとブラウザに詳細情報が表示されます。
8c1d32d1432226f625cab33c2ed1fcc7.png
しかし、production環境だと何かしらのERRORが発生したとしても「We’re sorry, but something went wrong.」と表示されてしまいます。
![picture_pc_f8886f63bd354c264487153ad2c5c567.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/611668/f674015b-2a6f-d900-9a71-20

元記事を表示

備忘録 会計freeeAPI叩いた時ハマったこと

## GETでクエリ指定する場合は、ちゃんとuri.request_uriでhttp通信しようね

これに尽きます、会計freeeのAPI仕様とかじゃなくただ単に自分の凡ミスだった。

###rubyで叩いた

OAuth(オーオース)2.0でACCESS_TOKENは取得済み。
こんな感じでパラメーターをセットして

“`ruby
BASE_URL = ‘https://api.freee.co.jp’
MY_COMPANY_ID = ‘*********’
USE_ACCESS_TOKEN_HEADER = {
“accept” => “application/json”,
“Authorization”=> “Bearer *************************”
}
“`

以下のように取引先の詳細を取得するAPIを叩いたところ
(分かりやすくかなり単純なメソッドにしてます)

“`ruby
def get_torihiki_id(name)
uri = URI.parse(BASE_URL + ‘/api/1/partners’)
ur

元記事を表示

OTHERカテゴリの最新記事