- 1. 【Ruby on Rails】タイムゾーンの設定を日本時間に変更する方法
- 2. Rails MySQL データ型をdecimalにしているのに小数点を扱ってくれなくて困った話
- 3. 画像の複数枚投稿と編集とプレビューと私
- 4. ruby で公開鍵の文字列から public key オブジェクトを作成する方法
- 5. 【Ruby】ハッシュとJSONの変換メモ
- 6. Unknown action ,The action ‘create’ could not be found for MessagesControllerの一例
- 7. ArgumentError in GroupsController#create ,wrong number of arguments (given 0, expected 1)の一例
- 8. 【翻訳】Testing best practices – GitLab
- 9. トランザクションとは
- 10. お名前.comを使い、独自ドメイン取得し、herokuデプロイする
- 11. Rails エラーメッセージの表示と日本語化
- 12. 次のunless文をif文に書き換えてください、という問題。
- 13. 初心者によるプログラミング学習ログ 210日目
- 14. 【Ruby】Seleniumで露骨な人間アピール
- 15. 超初心者がwebpackerについて調べてみたぞ
- 16. ruby console をするとエラーが出ちゃう
- 17. Ruby|クラスメソッド内の super について
- 18. AWS Cloud9 へ mysql2 のgemを導入する時にエラーが出てなんとか解決した
- 19. 処理の前後で作成されたObject数を数える
- 20. #Rspec + #Ruby / overwrite class method argument or method return value
【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/df04ca760290fd51b904Rubyのハッシュの小さなサンプルメモ – 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は定義していました。<エラー文>
<エラーに該当するファイル>
“`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件でしたよ」というエラーです<エラー文>
<エラーに関係したファイル>
“`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/
にて
取得したいドメイン名を入れて検索する## エラーメッセージの表示
![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日目は
おはようございます
210日目udemyでRuby、javascript
前にRubyの環境構築やっておいたからよかった#100DaysOfCode 【Ruby】Seleniumで露骨な人間アピール
# はじめに
seleniumを使用してサイト調査をしておりまして、
昨今のスクレイピング禁や[例の図書館事件](https://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6)も含めビビり倒しながらの調査の私です。
問題が発生したわけではないのですが、
**露骨に人間アピール**をしようと思って下記のようなメソッドを作ってみました。
多分みんなやっていると思いますが。# 該当ソースコード
“`ruby
def rndSleep
rnd = rand(5) + 1
sleep rnd.to_i
end
“`“`rand(5) + 1“`で1~5のランダムな数字を**rud**に代入して、
動作を〇秒間停止するsleepメソッド、〇秒部分に当てています。人間アピールしたい箇所に“`rndSleep“`を入れると1~5秒おいて実行してくれます。
私は繰り返し処理の、処理開超初心者が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
endclass 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: 108871puts “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
endRSpec.describe do
it do
expect(You.say(message: ‘YES’)).to eq({message: ‘YES’})
endit ‘adds hash key value to method return hash’ do
allow(You).to receive(:say).and_wrap_