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

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

【Ruby on Rails】タイムゾーンの設定を日本時間に変更する方法

タイムゾーンの設定を日本時間に変更する方法です。

設定方法

`config`の中の`application.rb`内に下記のコードを追加。

“`ruby:config/application.rb

config.time_zone = ‘Tokyo’
config.active_record.default_timezone = :local
“`

これだけです。

元記事を表示

Rails MySQL データ型をdecimalにしているのに小数点を扱ってくれなくて困った話

# 目的

– DBに格納されている数値に少数の値を足そうとして詰まりまくったところをまとめる

# 困った箇所

1. viewファイルで表している入力formの少数の値が入力できない。
– こちらで解決した→[HTML 少数入力時に「有効な値を入力してください」と出たときの話](https://qiita.com/miriwo/items/603cd7452d948161b6a6)
1. 入力してDBのカラムに保存しようとしてもカラムに反映されない。`save`でのエラーは出ない。
1. `rails console`で当該カラムに少数を入力し`save`するとDBのカラムに反映されるが、formから少数を入力しても足し算されない、整数の足し算はできる。

# 「viewファイルで表している入力formの少数の値が入力できない」の解決方法

– 下記の方法で解決した。
– こちらで解決した[HTML 少数入力時に「有効な値を入力してください」と出たときの話](https://qiita.com/miriwo/items/603cd7452d948161b6a6)

元記事を表示

画像の複数枚投稿と編集とプレビューと私

##以前の記事にて
初投稿につき緊張ながら投稿したのをよく覚えています。
たくさん見てくださってありがとうございました。
[画像の複数投稿??プレビュー表示??え??](https://qiita.com/gakinchoy7/items/f52577d0c5f6b2edff89)

しかし……

「投稿のみやん。editは?はよ。」と多数ご指摘をいただきました。

しかし…….

**何の成果もあげられませんでした。**

編集することができませんでした。

藁にもすがる思いでメンターさんにコードを見てもらい、アドバイスを仰ぎましたが、

「僕こんな実装したことないし、こんなやり方見たことない。
メンテナンス性も悪いし可読性もよろしくない。
他に効率のいい方法あるから…..やり直そうか」

と、ありがたくも残酷なご指摘をいただきました。

参考にしてくださった方々ごめんなさい。
メンテナンス性が悪く可読性もよくないお粗末なコードを書いてしまいました……

なので今回改良版をやります。意地で。

##仕様
1. 画像は5枚投稿できる
2. 投稿した画像は1枚

元記事を表示

ruby で公開鍵の文字列から public key オブジェクトを作成する方法

# 概要
公開鍵の文字列から public key オブジェクトを生成する方法について少しはまったので、共有します。

# コード
下記のような公開鍵があるときは

“`
—–BEGIN PUBLIC KEY—–
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0bXcnrheJ2snfq1wv6Qz 8+TEPDGKHCM0SsrQjxEFpXSEycL2/A+oW1ZGUzCuhz4HH4wkvc4CDJl25johSIUT Vyo4mrFrJ0ab0QAhrWE7gMyWFIfraj9cksPAGyVAiXLCN9Ly2xuoJxFjCAZXw1VO 8i7RTYK8ZP6dhcosiyzdhYt7C/65B5ikmCS4AymXIa83QQanCtjoGiwy4Cf2pLnn 9zXMZEnqQ+wwSoGn32YExmap7GAtjOwHNWU5zpW3dwNMq+zkcln3ICEBwxDpWJhE ZHZPBpPWgN+dQZDR2FiGHJgUFE3EM+CIcwxekrRBP+R3xEUeMFf5z1HeQNK8s

元記事を表示

【Ruby】ハッシュとJSONの変換メモ

# 前提

– Ruby 2.7
– Hash -> JSON は JSONモジュールの `to_json` を使用
– JSON -> Hash は `JSON.parse` を使用

# メモ
JSONはキーが文字列限定。Rubyのハッシュはキー、値ともに任意のオブジェクト。
ということは、RubyのハッシュからJSONに変換するときは、何らかのルールで、元のハッシュオブジェクトにJSONがサポートしていない型があった場合は変換されることとなる。

## 以前のメモ
JSONの形式の仕様ざっくりまとめとサンプル集 – Qiita https://qiita.com/kure/items/df04ca760290fd51b904

Rubyのハッシュの小さなサンプルメモ – Qiita https://qiita.com/kure/items/4f104bf4af4a5e243e61

## サンプル
### JSON -> Hash

キーは文字列のまま、値もそのまま変換される。null は nil へ。

“`ruby
require “json”

# JSON -> Has

元記事を表示

Unknown action ,The action ‘create’ could not be found for MessagesControllerの一例

#1.どんなエラー
MessagesControllerにcreateが定義されていませんよという内容です。
ちなみに筆者は下記の通りcreateは定義していました。

<エラー文>

スクリーンショット 2020-01-14 21.03.34.png

<エラーに該当するファイル>

“`ruby:messages_controller.rb
class MessagesController < ApplicationController before_action :set_group def index @message = Message.new @messages = @group.messages.includes(:user) end end def creat

元記事を表示

ArgumentError in GroupsController#create ,wrong number of arguments (given 0, expected 1)の一例

#1. どんなエラー?
「GroupsControllerのcreateの部分で引数が1つ返ってくると予想される(記述されている)のに、実行時には0件でしたよ」というエラーです

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

<エラーに関係したファイル>

“`groups_controller.rb
class GroupsController < ApplicationController def index end def new @group = Group.new @group.users << current_user end def create @group = Group.new(group_params

元記事を表示

【翻訳】Testing best practices – GitLab

> GitLabのテストにおけるベストプラクティス記事を日本語訳したものです。
>
> https://docs.gitlab.com/ee/development/testing_guide/best_practices.html
>
> 最終閲覧日時: 2020/01/06
>
> 途中、おかしな日本語があるかもしれませんので原文と照らし合わせてお読みください

## [Test Design](https://docs.gitlab.com/ee/development/testing_guide/best_practices.html#test-design)
GitLabではテストは最優先事項[1]です。機能の設計と同様に、テストの設計を考慮することは重要と考えています。

機能を実装するとき、我々は適切な機能を適切な方法で開発することを検討します。これにより、範囲を管理可能なレベルに絞り込むことができます。機能のテストを実装する場合、適切なテスト実装を検討する必要がありますが、重要な箇所をすべてカバーするテストは難しく、すぐに管理困難な段階にまで拡大するでしょう。

元記事を表示

トランザクションとは

IT用語トランザクションについて

複数の処理を1つにまとめたもの。
ただし、これら「複数の処理」は分離させることはできないこと。

具体例

1. Aさんの口座から100円分差し引き、残高1,000 – 100 = 900円にする。
2. Bさんの口座へ100円分プラスし、残高2,000 + 100 = 2100円にする。

1.の処理がうまくいって、2.の処理が何らかの原因で失敗したとする。そうなると、
Aさんの口座残高は5,000円になっているいる一方で、Bさんの口座残高は20,000円のままで、5000円が「消失」してしまうことになる。

まとめ

トランザクションは成功か失敗かの二択

元記事を表示

お名前.comを使い、独自ドメイン取得し、herokuデプロイする

こんにちは。
初学者の方で転職活動などの為にポートフォリオを作成している方も多いと思います。

その際にherokuを使ってデプロイする人が多いと思うのですが、

URLが、
〜herokuapp.com

となってしまい、なんかカッコ悪いなあって思いまして、
AWSを使って色々やろうとしたのですが、

ポートフォリオだからそこまで口数をかけたくないと思い

独自ドメインを使い、herokuで、デプロイすることにしました。

その手順を載せさせていただきます。
初学者の方への参考になれたら幸いです。

※前提として
Herokuにアプリをデプロイ済みであることとします

# 1.お名前.comで独自ドメインを取得する

https://www.onamae.com/

にて
取得したいドメイン名を入れて検索する

スクリーンショット 2020-01-14 12.17.33.pngRails エラーメッセージの表示と日本語化

## エラーメッセージの表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/520383/94cf4e9e-6676-5e5e-2728-0e12fda15a79.png)

上記の画像のようにタイトルとブログ本文が空だった場合はエラー表示される様に実装する事。

## モデルにバリデーションを設定
バリデーションを付けたいモデル(今回はpost.rb)に記載。

“`ruby:post.rb
class Post < ApplicationRecord validates :title, :content, presence: true end ``` titleカラムとcontentカラムが空を防ぐ。 ## エラーメッセージのファイルの作成 エラーメッセージはエラーが発生すると、_error_messages.html.erb内に格納される。 ```ruby:layouts/_error_messages.html.erb % if model.errors.any?

元記事を表示

次のunless文をif文に書き換えてください、という問題。

#問題
1 if a + b > 0
2  puts “計算結果は0より大きいです”
3 end
#模範回答
1 unless a + b <= 0 2  puts "計算結果は0より大きいです" 3 end #解説  unless 条件式 then   条件式が偽の時に実行する処理  end 上記が私の参考にしたunless文の使い方です。 今回の場合でいうと、  aとbの合計値が0以下でない時 = aとbの合計値が0より大きい時            unless文 = if文 どちらも同じ条件の内容を示します。
※表現に誤りのある箇所があった為、訂正済みです。

間違った解釈の見える箇所がありましたら、コメントしていただきたいです。今後の参考にさせていただきたいと考えております。

元記事を表示

初心者によるプログラミング学習ログ 210日目

#100日チャレンジの210日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。

100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。

210日目は

超初心者がwebpackerについて調べてみたぞ

Ruby on Rails を使って開発を始めた今日この頃。
サーバーサイドはそれとなく出来てきたからそろそろフロントも固めて行こうかしら。なんて思っていた僕はBootstrapをRailsで使おうと考えた。Bootstrapを使うのはいたって簡単。**htmlのhead内に以下のリンクをぶち込めばいいだけ**。

“`application.html.erb
“`
なんて便利だこと。
しかし、**Bootstrapを使うには他にも方法はある**。それは以下のリンクにある通りだ。
https://qiita.com/rhistoba/items/f724da

元記事を表示

ruby console をするとエラーが出ちゃう

僕「ruby console が使いたいなぁ」
僕「progate先生がターミナルに`ruby console`って入力すれば使えるって言ってたな」
…入力
ターミナル「エラーですわ」
僕「まじか」←今ここ
##前提
####僕のスペック
– プログラミング学習を始めて1ヶ月
– HTML/CSS/Javascript/Ruby/Railsをprogateで一応学習済
– Ruby on rails でポートフォリオを作成中

####開発環境
– 端末 : LENOVO ideapad 530S-14ARR
– OS : Windows 10 Home ver.1809
– シェル : PowerShell 5.1.17763.771
– Ruby : 2.4.9
– rails : 5.2.4.1

##本題
Ruby on rails を使ってアプリを作っていた僕は、データーベースの内容が知りたくなって、ターミナルから以下のコマンドを打ち込んだ。

“`terminal
ruby console
“`
その結果、以下のエラーが…

“`terminal
Loading d

元記事を表示

Ruby|クラスメソッド内の super について

# はじめに

本稿は `super` について書いています。普段はインスタンスメソッドで `super` を利用するシーンがあると思いますが、クラスメソッドだと混乱することがあったのでまとめになります。

# super is 何?

`super` をメソッドで呼び出すと、親クラスにある同名のメソッドを呼び出します。メソッドがなければ例外を起こします。

“`ruby
class Parent
def do(something)
p something
end
end

class Child < Parent def do super('something') end end c = Child.new ``` インスタンスメソッドだと、`ancestors` を使えばどのように探索をするかヒントになります。先の例だと `Child` クラスの継承関係に `Parent` クラスがあるので、そこからメソッドを探すことが出来ています。 もし、期待するメソッドが `Parent` クラスになければ更に親のクラスを探索します。さらに親の `Obj

元記事を表示

AWS Cloud9 へ mysql2 のgemを導入する時にエラーが出てなんとか解決した

Rubyの学習でデータベースを使おうと思って、

データベースといえばMySQLと思いつきでインストールしてしまい、

そのまま使えないじゃん!って思い、

mysql2というgem使えば使えるのか!と調べて気づき

mysql2がエラー出て入らねぇよ!!!と困り、

google大先生とQiitaの各先人様のおかげで導入できた

この流れの記録を書いておきます。

##とりあえずスタートはmysql2の導入エラーから
まぁ困った

実際にはこんな感じ

“`
ec2-user:/ $ sudo gem install mysql2
Building native extensions. This could take a while…
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.

/usr/bin/ruby2.0 extconf.rb
mkmf.rb can’t find header files for ruby at /usr/share

元記事を表示

処理の前後で作成されたObject数を数える

“`rb
GC.start
allocated_before = GC.stat(:total_allocated_objects) #=> ex: 108391
# ..何らかの処理..
allocated_after = GC.stat(:total_allocated_objects) #=> ex: 108871

puts “Object count: #{allocated_after – allocated_before}”
“`

Ref. https://gist.github.com/apauly/3f547f06e83b66e4187e48519b426464

元記事を表示

#Rspec + #Ruby / overwrite class method argument or method return value

https://relishapp.com/rspec/rspec-mocks/v/3-9/docs/configuring-responses/wrapping-the-original-implementation

“`rb

# https://relishapp.com/rspec/rspec-mocks/v/3-9/docs/configuring-responses/wrapping-the-original-implementation

class You
def self.say(message: )
{
message: message
}
end
end

RSpec.describe do
it do
expect(You.say(message: ‘YES’)).to eq({message: ‘YES’})
end

it ‘adds hash key value to method return hash’ do
allow(You).to receive(:say).and_wrap_

元記事を表示

OTHERカテゴリの最新記事