自由帳

既に知っていることも含めて再アウトプット用に書きます✍️

Railsのコンソールのちょっとしたtips

あるメソッドが定義されている場所を探す

以下のコードを実行することで、そのメソッドが定義されている行とファイルを正確に知ることができます。

$ User.instance_method(:name).source_location
=> ["app/models/user.rb", 56]

rake taskの実行

以下のコードを実行することで、コンソールからアプリで定義された任意のrakeタスクを実行できます。

$ Rails.application.load_tasks
$ Rake::Task['db:seed'].invoke
# 削除を伴うタスクの実行
$ rails c -s 

$ Rails.application.load_tasks
$ Rake::Task['oneshot:delete_hoge'].invoke

コンソールに表示される最新の値にアクセスする

コードを2回実行しなくても、最後にコンソールに表示された出力を_を使って保存したり操作したりすることができます。

$ SomeClass.new.some_method.another_method
=> { name: 'Hoge' }
$ _
=> { name: 'Hoge' }

コンソールでオブジェクトを操作する際のコンテキストの切り替え

コンソールで特定のオブジェクトを操作している場合、オブジェクトのメソッドや属性を呼び出すために毎回コードを繰り返す必要はありません。 オブジェクトのメソッドや属性を呼び出すたびにコードを繰り返す必要はありません。 irb を呼び出してコンテキストを切り替えることができます。

$ VeryLongNameOfObject.name
=> some name

$ VeryLongNameOfObject.attribute_name
=> other value

$ irb VeryLongNameOfObject
$ name
=> some name

$ attribute_name
=> other value

コンソールからのパスのテスト

コンソールでアプリケーションのパスをテストしたい場合は、次のようにします。 appオブジェクトを使用して、そのパス名を呼び出すことで可能です。

$ app.root_path
=> '/'

コンソールからのヘルパー・メソッドのテスト

アプリケーションのヘルパーをコンソールでテストしたい場合は、次のようにします。 ヘルパーオブジェクトを使用して、そのメソッドを呼び出します。

$ helper.some_method('Hoge')
=> Some output for argument 'Hoge'

コンソールレベルでのリクエストの実行

コンソールレベルでリクエストを実行して、アプリケーションの動作をテストしたり、レスポンスの属性やセッションの保存状況を確認することもできます。 アプリケーションの動作をテストしたり、レスポンスの属性やセッションの保存状態を確認することができます。

$ app.get "http://localhost:3000/articles"
=> 200

$ app.response
=> #<ActionDispatch::TestResponse...>

$ app.session[:cookies_accepted]
=> true

ActiveRecordが接続しているDBの設定情報を確認

$ ActiveRecord::Base.connection_config
=> {:adapter=>"sqlserver",
 :encoding=>"utf8",
 :username=>"hoge",
 :password=>"fuga",
 :tds_version=>7.4,
 :host=>"127.0.0.1",
 :database=>"piyo_test",
 :timeout=>5000}

[食べたログ]えどもんど

ramendb.supleks.jp

今回食べたメニューは。。。

「ラーメン(豚2枚・半玉子)」(900円)

  • コール:にんにく、あぶら(別皿のやつ)
  • 少し甘めのスープで美味しい
  • 肉も柔らかく凄く美味しい
  • 麺はそんな太麺ではなく、スープと凄くマッチしていて美味しい
    • 普通盛り300グラムなので結構量あります。麺少なめで注文する人が割と多い印象です。
  • 女性客やカップルも結構いる

f:id:shimada_ma:20210613125933j:plain


  • 今まで食べてきた二郎系でもトップクラスに美味しいです。
  • 次回来店するなら、トッピングの「生卵」とか「玉葱」も注文したい

[rack-attack] throttleの挙動確認方法

目的

前提条件

手順

1. ローカル環境をホワイトリストから除外する

# config/initializers/rack_attack.rb

  # NOTE: ローカル開発環境で挙動を確認するには下記をコメントアウトする
  safelist('allow from localhost', &:allowed_ip?) 

2. キャッシュを有効にする

ターミナルからrails dev:cacheを入力

tmp/caching-dev.txtが作成される(すでに作成されている場合は不要)

# config/environments/development.rb

  if Rails.root.join('tmp', 'caching-dev.txt').exist?
    config.action_controller.perform_caching = true
    config.action_controller.enable_fragment_cache_logging = true

    config.cache_store = :mem_cache_store,
                         "#{ENV['MEMCACHED_EXTERNAL_HOST'] || 'localhost'}:#{ENV['MEMCACHED_EXTERNAL_PORT'] || '11211'}",
                         { expire_in: 2.hours }
    config.public_file_server.headers = {
      'Cache-Control' => "public, max-age=#{2.days.to_i}",
    }
  else
    config.action_controller.perform_caching = false

    config.cache_store = :null_store
  end

3. サーバーを再起動し、リロード(⌘+R)しまくるとアクセス拒否される。

メモ

throttleの回数はキャッシュで管理している

関連URL

[食べたログ]かずき 本店

japanese-izakaya-restaurant-22396.business.site

亀有に用事があったので、駅近くの評判の良さそうなお店で食事🥢

今回食べたメニューは。。。

「とらふぐの唐揚げ」

  • 骨があって少し食べづらいが美味しい
  • ポン酢をかけたほうが美味い

f:id:shimada_ma:20210419001128j:plain

なめろう

  • 何の魚を使っていたかは忘れたが美味しい
  • あまり調味料を使っていなく、素材の味を楽しみました

f:id:shimada_ma:20210419001134j:plain

「刺身の盛合せ」

  • 本マグロのうてん、のどくろあぶり、たこ、いか、もう一つは忘れた
  • 全部美味しいが、本マグロのうてん、のどくろあぶりの2つは特に美味しい😊
  • 刺身の盛合は食べといたほうが良いです👍

f:id:shimada_ma:20210419001141j:plain

「まぐろのホホ肉の料理」

  • 店員に勧められるがままに注文
  • 写真撮り忘れたが、まぐろのホホ肉、ビビるほど美味い
  • 2回言うけど、まぐろのホホ肉、ビビるほど美味い

メニュー表はあるが、プラスでその日に仕入れた魚によってメニューを決めて、白い紙に手書きされやつがあります。

たぶん、どれを頼んでも美味しいです。

一品一品の料金が割とするので財布に余裕をもったほうが楽しめると思います。

2人で訪問して、1万円弱しました。(お酒代も含めて)