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

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

Webpacker::Manifest::MissingEntryError in Devise::Sessions#newというエラーが出た時の解決法

#開発環境
・Rails 6.0.3.1
・Ruby 2.6.6

#エラー時の状況

“`
$ rails s
“`

コマンドを実行して`localost3000`にアクセスすると、

“`
【エラー内容】

Webpacker::Manifest::MissingEntryError in Devise::Sessions#new
Showing /Users/XXXX_XXXX/Desktop/XXX_XXX_XXX/app/views/layouts/application.html.erb where line #9 raised:

Webpacker can’t find application in /Users/XXXX_XXXX/Desktop/XXX_XXX_XXX/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are usin

元記事を表示

Ruby インスタンスメソッドについて

インスタンスメソッドについての曖昧な知識の補完として書きます。
間違いなどありましたら、コメントいただけますと幸いです。

# インスタンスメソッド
・クラス構文内でメソッドを定義するとインスタンスメソッドになる。
・そのクラスのインスタンスに対して呼び出せる。

“`ruby
class Car
# インスタンスメソッドを定義する(ここではnameメソッド)
def name
“yellow cab”
end
end
# クラス名.newでインスタンスを作成して変数taxiに代入
taxi = Car.new
# インスタンスメソッドを呼び出す
taxi.name #=> “yellow cab”
“`

# まとめ
・インスタンスメソッドはクラス内で定義する。
・インスタンスを作成してから、インスタンスメソッドを呼び出す。
・インスタンスメソッドは、「インスタンス.メソッド」で呼び出せる。

# 参考にしたリンクや書籍
・メソッドとクラスメソッドとインスタンスメソッドが曖昧だった
https://qiita.com/right1121/items/c74d350

元記事を表示

もしもピカチュウが100まで数えたら

ゴミ箱に入っていたのをサルベージしました。
ピが2個続いている場所をよく聞けばピカピピカピカ=11にも対応できるのがコツ(?)
もしもピカチュウが「カピ」と鳴くことがあれば、もうこれは成立しない。

“`
(0..100).each{|i| p i;p i.to_s(2).rjust( (i.to_s(2).size % 2) + i.to_s(2).size ,”0″);puts i.to_s(2).rjust( (i.to_s(2).size % 2) + i.to_s(2).size ,”0″).scan(/.{1,#{2}}/).map{|a| a.gsub(/.*/,{“00″ =>”ピィカァ” ,”01″ => “ピカチュウ” ,”10″ => “ピカピ”,”11″ => “ピカピカ”})}.join(“”) }
“`

“`
irb(main):001:0> (0..100).each{|i| p i;p i.to_s(2).rjust( (i.to_s(2).size % 2) + i.to_s(2).size ,”0″);puts i.to_s(2).rjus

元記事を表示

Rubyを2行でセグフォらせる

流行ってると聞いたのでRubyでもやってみました

“`ruby
require ‘fiddle’
Fiddle::Pointer[0].ptr
“`

ワンライナー

“`sh
ruby -r fiddle -e ‘Fiddle::Pointer[0].ptr’
“`

なんでこれでセグフォるのかはあんまり理解していません…。

元記事を表示

.sort.uniq か、.uniq.sort か

配列をソートしてユニークするのに、`.uniq.sort` と `.sort.uniq` どっちが良いのか。

長いものには巻かれようと思ったものの、破壊的に実行すると、`.uniq!.sort!` は実行出来ないケースがある事が判明 `@2.7.1`

“`ruby:test.rb
r = {
‘s’ => [5,1,3,53,2],
‘t’ => [5,3,4,4,3,2],
}
r.each_key{|k|
#r[k].sort!.uniq!
r[k].uniq!.sort!
# => ダメ
}
p r
“`

“`shell-session:
$ ruby test.rb
Traceback (most recent call last):
2: from hoge2.rb:5:in `


1: from hoge2.rb:5:in `each_key’
test.rb:7:in `block in
‘: undefined method `sort!’ for nil:NilClass (NoMethodError)

元記事を表示

Time.strptime で、%j (年中の通算日)がアレ

他人様のコードをメンテする必要があって、コードを追ってると、`%j` な年月日を `UNIX time` に変換するのに、面倒な事やってた。

で、嫌気が差して、「`ruby` でも `strptime` あるだろ?」と適当に探すと、ビンゴ!!

## 問題発生

差し替える前に、テスト。

以下の様なコードを実行

“`
$ ruby -e ‘require “time” ; p Time.strptime(“2003,070,12:21:51 JST”, “%Y,%j,%H:%M:%S %z”).to_i’
1041391311
# ↑ 2003/01/01 12:21:51 JST
“`

問題発生。

え? `%j` 解釈してくれないの?

ググって見ても答えは得られず[^1]

[^1]: そもそも `%j` なんて使う事って特殊だし、、、

色々試して、、、

## 結論

古い `ruby` の `Time` クラス(モジュール?)の `.strptime` は、`%j` 解釈してくれないっぽい[^2]

検証では、`2.7.1p83` はOKだった[^3]

[

元記事を表示

三項演算子で、複数変数への代入

10年ぶりくらいに `ruby` のコードに立ち向かわなくてはならなくなった

“`shell-session:
$ ruby -e ‘i, j = 1 ? [1,2]:[3,4] ; p i, j’
1
2
“`

こんなので数時間悩んだのがアホみたい

元記事を表示

Error ExecJS::RuntimeUnavailable: 発生時の対処法

#発生現象
AWSのEC2でWebサーバ、アプリケーションサーバの設定時に、環境変数の設定をする際の`$ rake secret`を実行した際に下記Errorが発生。

“`terminal:terminal
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes.
/var/www/chat-space/config/application.rb:7:in `
/var/www/chat-space/Rakefile:4:in `require_relative’
/var/www/chat-space/Rakefile:4:in `
(See full trace by running task with –trace)
“`
→Javascriptがうまく走っていないので、[Node.js](htt

元記事を表示

railsのバリデーションとnull: false 自分用メモ

バリデーションとは、リクエスト側が送信した特定のカラムの値が空のままだったり、意図しない形で保存されるようなことを防ぐために、予めモデルに記述しておく、門番のような役割。

valid.png

上記の例だと、

text「通りまーす」
validates「待て」
text「えっ」
validates「お前何も入力されてないじゃないか。やり直し」
text「ぴえん」

こんな感じ。

一方でnull: falseとは。
実はこちらも空のままのデータを受け入れないための門番、その2。
null.pngRailsの存在確認メソッド 使い分けメモ (any?/empty?/present?(!blank?)/nil?)

# はじめに
Railsのビューで、「画像があったら表示させる」みたいな処理を書く場面がありました。
存在確認のためのメソッドは、Rubyのもの、Railsのもの含め、いくつかあります。
ちょっと調べて、「よし、これで行こう!」とメソッドを選択してレビューに出したところ、おもいっきり玉砕したので、今後間違えないように備忘録として残しておきます。

# 環境
macOS Catalina Version 10.15.5
Ruby: 2.6.5
Ruby on Rails: 6.0.3

# 調査対象
– any?(Ruby)
– empty?(Ruby)
– nil?(Ruby)
– present?(Rails)

#動機
過去にも類似の記事はあり、実際に大部分、「[rubyの真偽判定メソッド(nil?/empty?/blank?/present?)を検証してみた結果、興味深いことがわかった](https://qiita.com/go_d_eye_0505/items/541110cb9821734b0623)」に乗っからせていただきました。そのうえで、今回投稿に至った理由は、以下とな

元記事を表示

【Rails】Bootstrap3を用いた画像スライドショーの実装

# 目標
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/579893/99f925e0-0b2f-7adf-3aed-e09a36fd6597.gif)

# 開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina

# 前提

下記実装済み。

・[Slim導入](https://qiita.com/matsubishi5/items/b639ffddecc626856039)
・[Bootstrap3導入](https://qiita.com/matsubishi5/items/b117c95f4dd71340cc80)
・[投稿機能実装](https://qiita.com/matsubishi5/items/1a5aeab651b5822d1f2c)
・[画像複数アップロード機能実装](https://qiita.com/matsub

元記事を表示

ruby mapメソッド

##mapメソッドとは
配列に対して変更を加えて配列を返すメソッド。

##書き方

“`
オブジェクト.map { |変数|
# 実行したい処理
}
“`

もしくは

“`
オブジェクト.map(&:メソッド名)
“`

##実行例

####書き方1の場合

“`
a=[2,5,3]

b=a.map{ |hoge|

hoge*2
}

#結果 b=[4,10,6]
“`

まず、a[0]の2がhogeに代入されます。そしてhoge*2で4がb[0]に入ります。
次にa[1]の5がhogeに代入されます。そしてhoge*2で10がb[1]に入ります。
最後にa[2]の3がhogeに代入されます。そしてhoge*2で6がb[2]に入ります。

結果として b=[4,10,6]という配列が生まれます。

####書き方2 オブジェクト.map(&:メソッド名) の例

“`
a=[“リンゴ”,”ゴマフアザラシ”,”シカ”]

b=a.map(&:length)

結果 b=[3,7,2]
“`
lengthメソッドは文字列の長さを返すメソッドです。

元記事を表示

【Windows】gem install sqlite3ができない

# 環境
ターミナル: MSYS2(mintty+bash+pacman)
Ruby 2.6 + DevKit
Windows10 64bit

# SQLiteのバージョンは問わないという人

SQLite 1.3.13をインストールしよう
コンパイル済だからエラー出ることはないはず。

“`
gem install sqlite3 –version 1.3.13 –platform ruby
“`

# mkmf.logを見て
[①~package configuration for sqlite3 is not found篇~](https://qiita.com/nicokazu/items/944318dc0ef5746e2b9d)
[②~Cannot create temporary file in C:\篇~](https://qiita.com/nicokazu/items/3f6a6bc4b8f31b300648)
模索中…

# 出てくるエラー
“`
C:\Users\foobar>gem install sqlite3 –platform ruby

元記事を表示

【Windows】gem install sqlite3ができない ~package configuration for sqlite3 is not found篇~

# 原因
SQLiteのソースファイルが欠損している

# 解決
MSYS2コンソールで以下のコマンドを実行

“`bash
pacman -S libsqlite-devel
“`

あとはコマンドプロンプトでも良いのでgem install sqlite3 –platform rubyを実行します。

# エラー内容
“`
package configuration for sqlite3 is not found
“x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Ruby26-x64/include/ruby-2.6.0/x64-mingw32 -IC:/Ruby26-x64/include/ruby-2.6.0/ruby/backward -IC:/Ruby26-x64/include/ruby-2.6.0 -I. -D__USE_MINGW_ANSI_STDIO=1 -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0600 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET

元記事を表示

【Windows】gem install sqlite3ができない ~Cannot create temporary file in C:\篇~

# 原因
Windowsのユーザ名に2バイト文字(日本語)が使われている

# 解決
Tempファイルの位置を移動させる。
コマンドプロンプトで以下を実行

“`
mkdir C:\temp
set TEMP=C:\temp
set TMP=C:\temp
“`
日本語が使われていなければどのディレクトリでも大丈夫です。
あとはコマンドプロンプトでも良いのでgem install sqlite3 –platform rubyを実行します。

# エラー内容
“`
“pkg-config –exists sqlite3”
| pkg-config –libs sqlite3
=> “-LC:/msys64/mingw64/lib lsqlite3\n”
“x86_64-w64-mingw32-gcc -o conftest.exe -IC:/Ruby26-x64/include/ruby-2.6.0/x64-mingw32 -IC:/Ruby26-x64/include/ruby-2.6.0/ruby/backward -IC:/Ruby26-x64/include/ruby

元記事を表示

ncestryによる多階層構造データを表示、投稿!! ~Ajax~

# はじめに
ancestryで作成したカテゴリーデータを用いて、選択肢を動的に変化させる機能を実装しました。

学習メモとして投稿します。
まだ、理解が浅いところもありますが参考になればと思います!

完成形

https://gyazo.com/8a5adc080698873d544b8665855c0901

以下が完成コードです!

“`ruby:routes

resources :products, except: [:index] do
get ‘new/children_category’, to: ‘products#children_category’
get ‘new/grandchildren_category’, to: ‘products#grandchildren_category’
end
“`

“`ruby:puroducts_controller
before_action :set_categories, only: [:edit, :update]

〜省略〜

def children_cate

元記事を表示

簡単ログイン機能実装のエラー原因はauthenticate_user!だった

### はじめに
こちらの記事を参考に実装しましたので、コードで不明な点はこちらの記事を見にいってください。
[ゲストログイン・簡単ログイン機能の実装方法(ポートフォリオ用)](https://qiita.com/take18k_tech/items/35f9b5883f5be4c6e104)

### 発生している問題・エラーメッセージ
簡単ログイン機能の実装で、ログイン画面に「簡単ログイン」ボタンを設置したが、ボタン押してもログインできない。

“`:エラーメッセージ(ターミナル)
Processing by HomesController#new_guest as HTML
Parameters:{“authenticity_token”=>”c1Qc02T4i6+77OtxhGDwxJwEQUYO8d9cIncoNjZ/hXa5c3IzxHPjFAr2QleTBCuMpnxd5+1Sk+HRa9RNXLGSkg==”}
Completed 401 Unauthorized in 1ms (ActiveRecord: 0.0ms)
“`

### エラーになった時のソースコー

元記事を表示

【Rails】UrlHelperを拡張する

# 独自のUrlHelperを定義したい

`Rails.application.routes.url_helpers` を include したClassを作成するとよいです。

“`ruby

class MyUrlResolver
class << self include Rails.application.routes.url_helpers end # 独自定義したhelper def self.custom_users_path(user) if user.admin? admin_users_path else users_path end end end ``` これで、 ``` > MyUrlResolver.admin_users
=> “/admin_users”
> MyUrlResolver.users_path
=> “/users”
“`

標準のUrlHelperに加えて、

“`
> MyUrlResolver.custom_users_path(admin_us

元記事を表示

GraphQLでのPaginationの実装方法について(for ruby)

## 背景
弊社サービスのCarelyではサーバサイドはRuby(onRails)で実装されておりフロント(Vue)とのデータのやりとりをgraphQLで実装しています。
RailsでのPaginationはKaminariというgemをよく使うのですが、graphQLの場合はRelay-Style Cursor Paginationがstandardっぽいので両方の実装方法を試してみました。

## 使っているgem, versionについて(2020/6/26現在)
[kaminari](https://github.com/kaminari/kaminari)はversion 1.2.1
[graphql-ruby](https://github.com/rmosolgo/graphql-ruby)はversion 1.10.10
です。

## Relay-Style Cursor Paginationを使っての実装
(graphql-rubyのPaginationの説明のURLです)
https://graphql-ruby.org/pagination/using_conn

元記事を表示

rubyの変数をjavascriptで使う。

色々方法はあるみたいですが、今回実行した方法。

##結論
“`
index.html.erb

@test = { ‘hoge’ => ‘huga’, ‘hogehoge’ => ‘hugahuga’ }

  • OTHERカテゴリの最新記事