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

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

【Rails チュートリアル】”NoMethodError (undefined method `activation_digest=’ for #

# “NoMethodError (undefined method `activation_digest=’ for #

について

何故か本番環境だけで、このエラーがみられた

**user.rb**

“`
def activate
self.update_attribute(:activated, true)
self.update_attribute(:activated_at, Time.zone.now)
end
“`

とself.をつけ忘れてた

何故、ローカルだと問題なかったのか、、、

元記事を表示

railsでカスタムヘルパーの使い方

>引用先
>[Railsチュートリアル](https://railstutorial.jp/)

#カスタムヘルパーとは
Railsでは多くの組み込み関数が使えますが、使いたいメソッドがなかった時にオリジナルのメソッドを作成できます。
この新しく作ったメソッドのことをカスタムヘルパーといいます。

#ファイルの場所

“`ruby:app/helpers/application_helper.rb
module ApplicationHelper

end
“`

ファイルの位置は app/helpers/application_helper.rb
最初はこのようなファイル構造になっています。

#使い方

例えばこのように記述する。

“`ruby:app/helpers/application_helper.rb
module ApplicationHelper

def full_title(page_title = ”)
base_title = “Sample App”
if page_title.empty?
base_title

元記事を表示

discordrbで音声が使用できない場合の対処

# 環境
– OS: Windows10(**64bit**)
– Ruby: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [**i386-mingw32**]

# 起動時にこんなエラーが出る!
“`
libsodium not available! You can continue to use discordrb as normal but voice support won’t work.
Read https://github.com/shardlab/discordrb/wiki/Installing-libsodium for more details.
“`

# 対処
URLに記載の方法だと、何度やっても解消しない(おそらくx64-mingw32版Ruby用の説明のため)。
`C:\Windows\System32`ではなく、`C:\Windows\SysWOW64`に**32bit用**の`libsodium.dll`を`sodium.dll`にリネームして入れてやる。

libopusも入っていなければついで

元記事を表示

Dockerを用いてRuby on Railsの環境構築をする方法( Docker初学者向け )

Dockerを初めて勉強するとき、多くの方が「参考書」や「入門Dockerなどのサイト」で基礎的なところから学習すると思います。
しかし、Dockerとは何なのか、何のイメージも沸いていない状態で、様々な単語を羅列されても、さっぱりわからないという方も多いと思います。( 少なくとも私はそうでした。)
なので極論、基礎すっ飛ばしてまず実際にDockerで仮想環境を構築しながら学んでいこうという話です。
そして何となくでいいのでイメージを掴んでから、基礎を学べば良いと思います。
Dockerを初めて学習する方の中で、Ruby on Railsで開発したアプリケーションをポートフォリオとしている方も多いのではないでしょうか。
なので今回は、__Dockerを用いてRuby on Railsの環境構築をする方法__ をご紹介いたします。

ですが、超基本的なことだけ先に説明させてください。
( とにかく早く環境構築した人は __[前提](#前提)__ まで飛んでください )

## Dockerとは
![1_y6CvfE6WUgoIdT8Mp0Ev_g.png](https://qiita-i

元記事を表示

ゲッターとセッターをの理解をごっちゃにしないために【なんでもかんでもアクセサを使わない!】

ゲッターとセッターの解説記事は何個かあるので、そこはお任せするとして、
あと、アクセサという便利なコードもありますが、使い分けについて書かれてる物がすくなかったので、初学者編の基礎として振り返ろうと思って書きました。

まずはよくある車を設計する所です。

## アクセサを使える場合

“`ruby:車の設計
class Car
attr_accessor :model, :color, :option
def initialize(model, color, option)
@model = model
@color = color
@option = option
end
end

car = Car.new(“Benz”, “white”, “ホイール”)

#=> すべて変更可能

“`
これだったら、`attr_accessor` でまとめてしまっても良いのですが、
例えば **「もう車作ってるのに、車種と色変えられたら困るよ!!!(オプションだけだったらいいけど・・・)」** という場合の書き方は、

## ゲッターとセッターを使う場

元記事を表示

railsで検索機能を実装する方法(複数カラムも対応)

# 開発環境
Mac OS Catalina 10.15.7
ruby 2.6系
rails 6.0系

# 前提
前提として、現在私が作っている、記事を投稿できるアプリを例に説明します。
私はモデル名はpostモデルとしています。(参考にする際は、自分用に置き換えてください。)

# ルーティング設定

まずはルーティングを設定します。
今回はsearchアクションという、基本アクション(index,new,create,show,edit,update,destroy)以外のアクションを定義する必要があるため、collectionを使い設定します。

“`routes.rb
Rails.application.routes.draw do
devise_for :users
root to: “posts#index”
resources :posts do
resources :comments, only: [:create, :destroy]
collection do
get ‘search’
end
end
r

元記事を表示

rails test がデータベースの参照エラーで失敗する

# 経緯

Docker の中で Rails と MySQL を立て、 rails test でテストを実行しようとしたところ、エラーとなりました。

“`yml:docker-compose.yml
services:
mysql_test:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: aaa
MYSQL_USER: user
MYSQL_PASSWORD: password
TZ: ‘Asia/Tokyo’
command: mysqld –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
“`

“`shell
$ rails test test/integration/aaa_test.rb
Error:
AaaTest#aaa:
ActiveRecord::ConnectionNotEstablish

元記事を表示

Ruby Gem Code Reading settingslogic 編その1

## 背景
この記事を読んで、コードリーディングしながらRubyの知識深めようと思ったため
https://blog.freedom-man.com/try-rubygem-codereading

## 対象
[settinglogic](https://github.com/binarylogic/settingslogic)

## コードを読む準備をする

### 対象のgem をインストールする

“`
$ bundle init
“`

さっそく最初からつまずく..

“`bash
$ gem install settingslogic
ERROR: Loading command: install (LoadError)
dlopen(/Users/XXXX/.rbenv/versions/2.4.2/lib/ruby/2.4.0/x86_64-darwin16/openssl.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced

元記事を表示

【Bootstrap】いきなりログアウトできなくなった〜なんでや?CSRF問題らしい〜

### 解決したいこと
Bootstrapを導入してからログアウトができなくなってしまった。

### 発生している問題・エラー

ログイン後、ヘッダー部分にあるログアウトボタンを押すとエラーメッセージが出て、一生ログアウトできない。

![a746095752c272c27d28d5b332bbf41f.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887559/8c4f8248-c4ee-02db-b5e4-69f0d14a7892.png)

### 該当するソースコード
“`application.html.erb





元記事を表示

Ruby3.0でpostgresqlのgemがうまくインストールできない

Ruby3.0を試していたところ
postgresqlのgemのpgがうまくインストールできなかったので
記事を探していたら解決できたので備忘のために。

私は下記issuesを参考に解決できました。感謝!!!
https://github.com/ged/ruby-pg/issues/365

自分が実施した手順は以下。

“`
$ ridk exec pacman -S mingw-w64-x86_64-postgresql
依存関係を解決しています…
衝突するパッケージがないか確認しています…

パッケージ (18) mingw-w64-x86_64-bzip2-1.0.8-2 mingw-w64-x86_64-ca-certificates-20200601-2
mingw-w64-x86_64-libgcrypt-1.8.7-2 mingw-w64-x86_64-libgpg-error-1.41-3
mingw-w64-x86_64-libsystre-1.0.1-4 mingw-w64-x8

元記事を表示

vscode の Ruby Test Explorer で minitest を動かすと NoMethodError: undefined method `klass’ for …

## tl;dr
* minitest 5.10.1 を 5.14.1 に更新したら直った
* ref: https://github.com/connorshea/vscode-ruby-test-adapter/issues/20#issuecomment-668046280

## 環境
* VS Code Version: 1.52.1
* ruby 2.6.3 (rbenv)
* minitest (5.10.1)

## はじめに
* 以下のようなサンプルの test を書く

“`ruby:test/test_import.rb
require ‘minitest/unit’
require ‘minitest/autorun’

class TestFoo < MiniTest::Test def setup end def test_foo assert_equal 1, 1 end end ``` * vscode + [Ruby Test Explorer](https://marketplace.visualstudio.com

元記事を表示

手軽にチャットを作成できるサービスをリリースした!

##初めに
今回はweb上で動くチャットアプリ 「スコーチチャット」を作りました。
アカウント登録不要
ダウンロード不要
で使い捨てで使われることを想定してます。

![chat-top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480294/a3e7df9c-e0d8-251b-cdc0-44832a4cea7a.png)
パスワードも設定可能です

URL
https://scorch-chat.herokuapp.com/

##開発環境
rails6
ruby2.7
heroku
postgresql
ActionCable
slim

いつもと同じです。

##開発期間
5日くらいです。
webアプリは当たる確率が6%程で質より量を打ったほうがいいといわれたのでなるべく早く作りました。

##チャット画面
![chat-smart.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480294/0f689b9

元記事を表示

PayjpでのInvalidRequestErrorについて

Payjpのカード決済機能の導入中にエラーが出現

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

Payjp::InvalidRequestError
今回はこちらについてやっていこうと思います。
(ちなみにapi_key = ENV[〜〜]の記述は環境変数となっています。ご自身で設定してる値になります。)

# まずエラーの内容の把握

InvalidRequestErrorとは:
無効なリクエスト、という意味。

ではその下の
Missing required param to chargeとは:
missing_paramというのが必要なパラメータがセットされていないと出るもの

すなわち、この場合chargeに必要なパラメータがないよ。という意味になります。

慣れている人からすればすんなり解決できるのでしょうが、よくわからなかったので、そのまま下に進むと

元記事を表示

Ruby on Railsでwysiwygエディタのgem「summernote」 実装方法

##Ruby on Railsでwysiwygエディタのgem「summernote」 実装方法
wysiwygエディタをgem「summernote」を用いて実装した際、なんとなくで実装してしまっていたため、改めてここに書いておこうと思います。

##summernote
[公式ページ](https://github.com/summernote/summernote-rails)

##作成するもの
・gem「summernote」を用いて記事投稿できる機能
・gem「public_uid」を用いて記事のIDはqiitaの記事の様にランダムの文字列にする

##①リッチテキストエディタ作成手順
###STEP1 : gem をインストール

“`ruby:Gemfile
gem ‘summernote-rails’
gem ‘jquery-rails’
gem ‘bootstrap’
“`

“`
bundle install
“`
###STEP2 : Modelを作成
各種名前は任意で

“`
rails g model article title:string me

元記事を表示

gem install cocoapods に 失敗(‘ruby/config.h’ file not found)

少しハマったので備忘録として残しておきます。
## 環境
MacOS : Big Sur 11.1 (20C69)
Xcode : Version 12.3 (12C33)

## 経緯
pod コマンドを使用したところ、cocoapodsをアップデートしてねと言われる

“`
% pod outdated
Ignoring ffi-1.13.1 because its extensions are not built. Try: gem pristine ffi –version 1.13.1
Ignoring iStats-1.6.1 because its extensions are not built. Try: gem pristine iStats –version 1.6.1
Updating spec repo `trunk`

CocoaPods 1.10.1 is available.
To update use: `sudo gem install cocoapods`
:
“`

## エラー内容
ほいほいとアップデート実行すると以下のエラーが発生

元記事を表示

(2021年)Ruby on Rails 管理者(admin)ログイン作成

###前提条件
* deviseでcosutomerログインできること

“`:ターミナル
$ rails g devise Admin
$ rails db:migrate
“`
adminでログインするユーザー作成する。

“`ruby:db/seeds.rb
Admin.create!(
email: ‘admin@admin’,
password: ‘testtest’
)
“`

“`:ターミナル
$ rails db:seed
“`

adminのユーザーデータが入っているか確認する。

“`:ターミナル
$ rails c
$ irb(main):001:0> Admin.all
$ irb(main):002:0> exit
“`
次はviewとcontrollerの作成します。

“`:ターミナル
$ rails g devise:views admins
$ rails g devise:controllers admins
“`

ルーティングを編集をします。

“`ruby:config/routes.rb
devise_for

元記事を表示

Rails がオワコンwww

# はじめに
※ この文章はベータ版です。

Yahoo!知恵袋にあった間違いだらけのベストアンサーがあまりにも…だった
ので書いています。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10236599945

#このベストアンサーの問題点

著者が、よく知りもしない情報について、きちんと調べもせず、以前、聞き齧ったorどこかで
読んだような気がする、うろ覚えの情報をベースに、回答しているようにしか見えない。

自分がうろ覚えの情報で回答することで、ネット上に誤情報をばら撒く可能性を考えていない
時点で、自分はこの著者が技術屋or技術屋を目指す人間なら、アウトと評価します。

(この著者、「はず」「と思う」を多用することで、うろ覚えの情報で回答していますよアピールを
している気が、、、うろ覚えの情報で回答していることに、何ら問題を感じていないようにみえます、
自分のうろ覚えの情報が間違っていた時のための予防線を張っているようにも。。。

「はず」「と思う」が多用されていても、質問者や読者が正しい情報と誤認識する

元記事を表示

M1のmacに変えたらbundle installできなくなった件

先日、M1のmacbook proが届いて「さぁこれでairにイライラする生活ともおさらばだ!」とウキウキで環境構築していたらbundle installの段階で謎のerrorが出て余計にイライラすることになりました。

「新年早々…」と思いつつ色々調べた結果、なんと解決できたのでメモ程度に共有させていただきます。
#エラーについて
※すぐにエラー内容が開けなかったため概要だけにさせてください。覚えていたら追記します。

エラーで詰まるまで以下の手順を踏みました。
・githubからrailsプロジェクトをローカルにclone
・bundle install
そして、エラーを起こしたgemは私が確認した限りでは以下のものでした。

– ffi
– sassc

#解決方法
私の環境では以下の手順で解決しました。

Finder>アプリケーション>ターミナル(右クリック)>情報を見る>「Rosettaを使用して開く」にチェック

#まとめ
これは他の調べものをしていた際にたまたま見つけた解決方法でした。
一応、以下に本件に関連のありそうなappleのサポートページを

元記事を表示

migrate出来なかった時のお話

# 凡ミスでmigrate出来なかった時のお話

>1. [rails g modelコマンド](https://qiita.com/iamu_TECH_CAMP/items/f40c475a46cfa6e5f30b#rails-g-model%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89)

>2. [rails db:migrateコマンド](https://qiita.com/iamu_TECH_CAMP/items/f40c475a46cfa6e5f30b#rails-dbmigrate%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89)

>3. [本題のerror発生](https://qiita.com/iamu_TECH_CAMP/items/f40c475a46cfa6e5f30b#migration%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84)

>4. [仮設・検証](https://qiita.com/iamu_TECH_CAMP/i

元記事を表示

Rspecコマンドが面倒だからRakeコマンド一発でRspecが実行できるようにしてみました

## 元々の状況・課題
Rubyで[チケット料金モデリング](https://github.com/j5ik2o/ticket-price-modeling)に挑戦中。
Rspecでテストを書いているが、ターミナルに毎回Rspecコマンドを入力するのが面倒になった。

## 目的
Rspecを簡単に実行したい。

## やったこと・結果
①[Rake](https://docs.ruby-lang.org/ja/latest/library/rake.html)というライブラリを使った。
②ターミナルにrakeコマンドを入力するだけで、全てのspecファイルが一括で実行できるようになった。
③楽になりました。

## Rakeとは(ざっくり)
Rakefileに実行したいことを書いて、Rakefileに書いた内容をrakeコマンドで簡単に実行できる。
ターミナルに長々とコマンドを打たなくても良くなる。

## ディレクトリ構成は、ざっくりですがこんな感じです。
“`
├── lib
│ ├── user.rb
│ └── ticket.rb

├── spec
│ ├─

元記事を表示

OTHERカテゴリの最新記事