あっという間の十年ブログ【Ruby篇】

"詮ずるところ#{プログラミング}は、ただ年月長く倦まずおこたらずして、はげみつとむるぞ肝要にて、学びやうは、いかやうにてもよかるべく、さのみかかはるまじきことなり。いかほど学びかたよくても、おこたりてつとめざれば、功はなし。また、人々の才と不才とによりて、その功いたく異なれども、才不才は、生まれつきたることなれば、力に及びがたし。されど、大抵は、不才なる人といへども、おこたらずつとめだにすれば、それだけの功は有る物なり。" - 本居宣長

Fakerのエラー:ArgumentError: wrong number of arguments (given 1, expected 0)

Railsチュートリアル13章(13.2.2マイクロポストのサンプル)

チュートリアルにしたがって、

users = User.order(:created_at).take(6)
50.times do
  content = Faker::Lorem.sentence(5)
  users.each { |user| user.microposts.create!(content: content) }
end

としたところ、

$ rails db:seed
rails aborted!
ArgumentError: wrong number of arguments (given 1, expected 0)
C:/…/environment/sample_app/db/seeds.rb:31:in `block in <main>'
C:/…/environment/sample_app/db/seeds.rb:30:in `times'
C:/…/mntbl/environment/sample_app/db/seeds.rb:30:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

引数が多すぎるとのこと。

content = Faker::Lorem.sentence

思い切ってFaker::Lorem.sentenceの引数を消したら、いけました。
なお、Fakerのバージョンは3.0.0

Faker::Loremのドキュメント(github)を確認すると、引数を指定しない場合はセンテンスの長さがちょうど4単語になるとのこと。

ActiveRecord::NotNullViolation: RuntimeError: NOT NULL constraint failed: microposts.user_id

Railsチュートリアル13章
「13.1.4マイクロポストを改良する」という項のなかで、テストを実行すると、

ActiveRecord::NotNullViolation: RuntimeError: NOT NULL constraint failed: microposts.user_id

というエラーが出た。
トライ&エラー&ググレカスを繰り返し、結局

orange:
  content: "I just ate an orange!"
  created_at: <%= 10.minutes.ago %>
  user: yuki

tau_manifesto:
  content: "Check out the @tauday site by @mhartl: http://tauday.com"
  created_at: <%= 3.years.ago %>
  user: yuki

cat_video:
  content: "Sad cats are sad: http://youtu.be/PKffm2uI4dk"
  created_at: <%= 2.hours.ago %>
  user: yuki

most_recent:
  content: "Writing a short test"
  created_at: <%= Time.zone.now %>
  user: yuki

microposts.ymlに、それぞれuser:の行を追加して、test/fixtures/users.yml内に存在するユーザー(私の場合yukiチュートリアル通りだとmichael)に紐づけたら、テスト通過。

追記:章の少し先にいったところ(13.2.3)で、結局user:の行を追加していた。バージョンの違いによってテスト通ったり通らなかったりするようだ。

朝、PCを開いたら音量が大音量になっていた(Windows10)

※別に面白い話は始まりません。

音量を下げても、なぜかずっと音量MAXのまま。 タスクバーから音量ミキサーを開くと、どういうわけか全部0になっている。 再起動しても変わらず。ブラウザを変えても大音量のままなので、PCの側がおかしい。

試したこと

バイスマネージャーから「サウンド、ビデオ、およびゲームコントローラー」を開き、サウンドの「デバイスを無効にする」を押す。

再起動すると、当然、音量調節はできず、YouTubeを開いても音は鳴らない。

ふたたびデバイスマネージャーを開き、今度は、「デバイスを有効にする」を押す。

→治った!

調べても同じ症状の人が見つからなかったが、似たような人なら一人いた。 音量設定を無視して音が鳴る この方はvisual studio Codeを起動すると、症状が出る(気がする)らしい。 たしかに2週間前に入れたけど、まさかね…。 もう少し様子見てみます。

RailsとJavaScript(メモ)

Railsチュートリアル10章

ブラウザはネイティブではDELETEリクエストを送信できないため、RailsではJavaScriptを使って偽造します。つまり、JavaScriptがオフになっているとユーザー削除のリンクも無効になるということです。JavaScriptをサポートしないブラウザをサポートする必要がある場合は、フォームとPOSTリクエストを使ってDELETEリクエストを偽造することもできます。こちらはJavaScriptがなくても動作します 。
注)詳しくはRailsCastの "JavaScriptを使わない削除" (英語) を観てください。

JavaScriptの入れ方わからんから、DELETE使うやつは飛ばしてこ…。
(なおRails 7.0.4)

#これだとdeleteではなくget扱いになる
<%= link_to "Log out", logout_path, method: :delete } %>
#調べてみたらturboの書き方でいけるとあったけど、だめだった。
<%= link_to "Log out", logout_path, data: { turbo_method: :delete } %>
#buttonならいけるので、これで妥協。(Railsチュートリアルのスタイルシートがボタンの所だけ変な感じになるが…)
<%= button_to "Log out", logout_path, method: :delete %>

link_toからbutton_toに変えたので、テストのassert_selectもa[href=?]から[action=?]に変えておく。
チュートリアルで一番てこずったが、立ち止まって、こういう試行錯誤をするなかで理解が進んでいっている)

Chromeのブックマークの保存場所(windows)

C:\Users\ユーザー名\AppData\Local\Google\Chrome\User Data\Default\Bookmarks

(Bookmarksのファイル形式はjson

ついでにRubyjsonファイルを読み込む

require 'json'

File.open("C:/Users/ユーザー名/AppData/Local/Google/Chrome/User Data/Default/Bookmarks") do |file|
  hash = JSON.load(file)
  p hash
end

あれから10年・・・

プログラミングを一切辞め、哲学にうつつを抜かし、大学院(法学哲学)を卒業し、高校教員(国語)になり、高校教員を辞め、自宅警備員になり、自宅塾講師になり、地元(Matz江)のIT会社に履歴書を送り、Rubyistになります。

 

はてな"ブログ"(当時は"ダイアリー")が残っててびっくらこいた

2013年9月に読んだ本

nnoymousの本棚 - 2013年09月 (29作品)
倫理用語集
読了日:09月28日

powered by booklog