Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSS Gateワークショップ 2016-06-11: ota42y: collectiveidea/delayed_job: 作業ログ #52

Closed
ota42y opened this issue Jun 11, 2016 · 62 comments

Comments

@ota42y
Copy link
Contributor

ota42y commented Jun 11, 2016

OSS Gate へようこそ。

Workshop では一人ずつ GitHub issue を立ててそこで作業ログを残していきながら進めます。
過去のビギナーのものはこちらで見られます。 https://github.com/oss-gate/workshop/issues?q=is%3Aissue+is%3Aclosed

この issue 作成時点でまずやること

  • この issue のタイトルを「OSS Gateワークショップ ${YEAR}-${MONTH}-${DAY}: ${アカウント名}: ${OSS名}: 作業ログ」の形式でつけてください
  • OSS 名が未定の場合はタイトルは後からでも変えられるので、とりあえず未定などでも OK です

作業開始してからやること

以下を参考にしながらやってみます。

https://github.com/oss-gate/workshop/blob/master/tutorial/scenario.md

作業ログについての説明(わからなくなったら都度読み返してください)

作業ログは、ビギナーが、このワークショップを通して得るものをより増やすために重要になります。なぜなら作業ログがメンターからのフィードバックをより充実させるからです。

作業ログを元にメンターと「ふりかえり」をするタイミングがあります。「ふりかえり」では次のことをします。

  • ビギナーは作業ログの内容を順にメンターに説明する。
  • メンターは説明を聞いてビギナーにフィードバックをする。

メンターは次のようなフィードバックをします。これは、ビギナーとは違う視点からビギナーの行動を観察することおよびメンターの経験があるからできることです。(「ふりかえり」の前にこんなフィードバックをよろしくお願いします!とお願いすると効果が高まるので実践してみましょう。)

  • ビギナーが気づかずにやっていたよい行動に気づくきかっけを与え、今後もその行動を継続するように促します。
  • ビギナーが困っていることについて、解決策を一緒に考えてくれます。
  • 適切な質問をしてビギナーが整理できていない行動や考えを整理してくれます。
  • ビギナーが「問題」だと認識していないこと(「問題発見」は難しい!)をメンターの視点から「問題」だと見つけてくれます。「問題」がはっきりしたら直しましょう。
  • ビギナーが次にどの方向に進めばよいかを整理してくれます。

このように、ビギナーの作業をメンター視点で一緒に整理し、ビギナーの今後の行動に活かす活動がここでいう「ふりかえり」です。そのため、「ビギナーにとって」ログに残すべきかどうか、という視点ではなく、「とりあえずログに残す」という視点でログを残してください。これは、ビギナーが重要だと判断しなくてもメンターの視点から見たら大事なこともあるからです。

ログに残すときは次のようなときです。

  • 違う作業を始めたとき(インストールを始めた、動作確認を始めた、テストを始めた、とか)
  • 詰まったとき(インストール時にエラーがでた、ビルドが失敗した、とか)
  • issueを出したとき
  • pull requestを出したとき

ログに残すことは次のことです。「備考」以外は作業の邪魔にならないように一言でよいです。備考は作業に役立つので必要な分だけ書いてください。

  • 作業(やること、やっていること、やったこと。)
  • 思っていること(そのときどう思っているか。)
  • 備考(必要な付加情報。)

ログはコメントとして追記していってください。テンプレートは次の通りです。

* 作業(ここにやること、やっていること、やったことを書く)
* 思っていること:(今どう思っているかを書く)

備考:(必要なら必要なだけ書く。必要ないなら書かなくてもよい。)

例1(備考なし):

* 作業:インストールを始めた
* 思っていること:ドキュメント通りに進めれば大丈夫だろう

例2:

* 作業:インストールが失敗した
* 思っていること:ドキュメントに手順が足りない?

備考:エラーメッセージは次の通り

```text
XXX is not found
```

必要なファイルが足りないのかなぁ。
@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • reading readme
  • テスト落ちてる(´・_・`)?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 使い方
  • 非同期に処理を実行できるgem

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • install
  • Railsしかサポートしてないのでrailsも入れる

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • install
  • nokogiriのインストール長い…(´・_・`)

bundle init

Gemfile
gem "rails"
gem 'delayed_job_active_record'

bundle install --path vendor/bundle
Using bundler 1.11.2
Installing delayed_job 4.1.2
Installing rails 4.2.6

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • インストール終わった
  • 次は試しに動かす

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 動かし方を読む
  • ActiveRecordをバックエンドとして使うには job tableが必要らしい。AR以外をバックエンドにできるのかか?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • AR以外のバックエンドが使えるのか調べる
  • mongodbをバックエンドにできるらしい(別のgemも必要)
    If you plan to use delayed_job with Mongoid〜

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • job tableを作る
  • rails newしてなかった…使い方間違えてた(`・∀・´≡`・∀・´)

note
rails generate delayed_job:active_record
rails newしろよーエラー

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • railsのインストール
  • gem i rails

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 他にどんなgemを使ってるか読む
  • gem i rails中暇なので。
  • activesupportが必須gem

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • テスト用railsアプリを作る
  • API-modeは5移行なので4.2.6を入れてるので普通に作る
  • ralis new delayed_job_test

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • gemの依存関係調査
  • gemfileとgemspecの関係がわからない…
    • gemfile側にもrakeや platforms :rubyがあるけど、gemspec側にもdependencyがある
      • platforms指定はGemfilesじゃないとできない?
        • だとしたらrakeはgemspec側でも良いのでは?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • rubocopってgemfileに書く必要あるの?
    • いつもコマンドで実行しているイメージ
    • requireしてないなら不要?開発時に必ず使うパスがある?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • rails new中にrdoc/riの警告?メッセージが出る
  • 1.9.2以上で実行しているならそもそも不要では?

note

Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • delayed_jobを入れる
  • gem 'delayed_job_active_record'を書いてbundle install
    • delayed_jobは直接入れず、AR用のgemから依存関係で入るみたい
    • 多分mongodb版も同じかと

note

Installing delayed_job 4.1.2
Installing delayed_job_active_record 4.1.1

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • job table用のmigrationとか作る
  • rails generate delayed_job:active_record
    • bin/delayed_jobもできた

code

Running via Spring preloader in process 16874
      create  bin/delayed_job
       chmod  bin/delayed_job
      create  db/migrate/20160611022955_create_delayed_jobs.rb

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • job tableのmigration実行
  • rake db:migrate
    • エラー(´・_・`)

code


rake aborted!
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 11.1.2. Prepending `bundle exec` to your command may solve this.
files/workspace/delayed_job_test/config/boot.rb:3:in `<top (required)>'
files/workspace/delayed_job_test/config/application.rb:1:in `<top (required)>'
files/workspace/delayed_job_test/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- bundler/setup
files/workspace/delayed_job_test/config/boot.rb:3:in `<top (required)>'
files/workspace/delayed_job_test/config/application.rb:1:in `<top (required)>'
files/workspace/delayed_job_test/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • システムのrake が使われてた
  • bundle exec rake ではなく rake で実行していた

code

rake --version
rake, version 10.4.2
bundle exec rake --version
rake, version 11.1.2

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • システムのrake消す
  • できない
    • default gemらしい。
    • 必須だから消せない→知らないうちに古いrake使ってる可能性が

note

gem uninstall rake
ERROR:  While executing gem ... (Gem::InstallError)
    gem "rake" cannot be uninstalled because it is a default gem

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

readme にbundle exec rakeにして欲しい

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • そもそもbundle exec rake実行してもrequireに失敗するのでは?
  • グローバルにrakeのバージョン指定してインストールしてみる

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • rakeを11.1.2に上げる
  • gem install rake -v 11.1.2

note

rake --version
rake, version 11.1.2

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • rake11.1.2でbundleを使わずにマイグレーションする
  • rake db:migrate
    • 通った(´・_・`)!
    • rakeタスク内でdependencyのgemをrequireしてなければいけるのかな…?

note


== 20160611022955 CreateDelayedJobs: migrating ================================
-- create_table(:delayed_jobs, {:force=>true})
   -> 0.0033s
-- add_index(:delayed_jobs, [:priority, :run_at], {:name=>"delayed_jobs_priority"})
   -> 0.0006s
== 20160611022955 CreateDelayedJobs: migrated (0.0041s) =======================

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 開発時の機能
  • 100個のjobごとか、queueが終わったタイミングでコードをリロードする
    • delayed_jobの再起動は要らないらしい…便利
    • jobとqueueのfinishってどう違うの?
      • queueのfinishはキューの一つの処理が終わったとき?キューがからになったとき?
    • 読み込む範囲はdelayed_jobが読み込むコード全て?delayed_job本体への変更は?
      • (リロードする周りに変更があった場合にリロードされる?)

どう扱うか検討しよう

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • rails4系の制約
  • protected_attributes gemを使っている場合はgemfileの上に書く必要があるらしい
    • 何かと競合するから?
    • gemfileの書き順によってロード順が変わる?
    • requireの評価順で挙動が変わるのかな??

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • model作る
  • rails g model user name:string

note

      invoke  active_record
      create    db/migrate/20160611045154_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • delayed job用のメソッド作る
  • こんな感じ

note


class User < ActiveRecord::Base
  def update_name(new_name)
    @name = new_name
    @name.save
  end
end

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 同期保存
  • アップデートされてる
irb(main):006:0* u = User.create(name: 'before')
   (0.2ms)  begin transaction
  SQL (0.3ms)  INSERT INTO "users" ("name", "created_at", "updated_at") VALUES (?, ?, ?)  [["name", "before"], ["created_at", "2016-06-11 05:06:42.352407"], ["updated_at", "2016-06-11 05:06:42.352407"]]
   (14.8ms)  commit transaction
=> #<User id: 5, name: "before", created_at: "2016-06-11 05:06:42", updated_at: "2016-06-11 05:06:42">
irb(main):007:0> u.update_name('after_sync')
   (0.1ms)  begin transaction
   (0.1ms)  commit transaction
=> true
irb(main):008:0> u
=> #<User id: 5, name: "before", created_at: "2016-06-11 05:06:42", updated_at: "2016-06-11 05:06:42">
irb(main):009:0> User.last
  User Load (0.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" DESC LIMIT 1
=> #<User id: 5, name: "before", created_at: "2016-06-11 05:06:42", updated_at: "2016-06-11 05:06:42">

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 非同期保存
  • まだ呼ばれてない
u = User.create(name: 'async_before')
   (0.1ms)  begin transaction
  SQL (0.3ms)  INSERT INTO "users" ("name", "created_at", "updated_at") VALUES (?, ?, ?)  [["name", "async_before"], ["created_at", "2016-06-11 05:07:38.432976"], ["updated_at", "2016-06-11 05:07:38.432976"]]
   (52.3ms)  commit transaction
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">
u.delay.update_name('after_async')
   (0.1ms)  begin transaction
  SQL (0.4ms)  INSERT INTO "delayed_jobs" ("handler", "run_at", "created_at", "updated_at") VALUES (?, ?, ?, ?)  [["handler", "--- !ruby/object:Delayed::PerformableMethod\nobject: !ruby/object:User\n  raw_attributes:\n    name: async_before\n    id: 6\n    created_at: &1 2016-06-11 05:07:38.432976000 Z\n    updated_at: *1\n  attributes: !ruby/object:ActiveRecord::AttributeSet\n    attributes: !ruby/object:ActiveRecord::LazyAttributeHash\n      types:\n        id: &4 !ruby/object:ActiveRecord::Type::Integer\n          precision: \n          scale: \n          limit: \n          range: !ruby/range\n            begin: -2147483648\n            end: 2147483648\n            excl: true\n        name: &3 !ruby/object:ActiveRecord::Type::String\n          precision: \n          scale: \n          limit: \n        created_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter\n          subtype: &2 !ruby/object:ActiveRecord::Type::DateTime\n            precision: \n            scale: \n            limit: \n        updated_at: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter\n          subtype: *2\n      values:\n        id: \n        name: \n        created_at: \n        updated_at: \n      additional_types: {}\n      materialized: true\n      delegate_hash:\n        name: !ruby/object:ActiveRecord::Attribute::FromUser\n          name: name\n          value_before_type_cast: async_before\n          type: *3\n          value: async_before\n        id: !ruby/object:ActiveRecord::Attribute::FromUser\n          name: id\n          value_before_type_cast: 6\n          type: *4\n          value: 6\n        created_at: !ruby/object:ActiveRecord::Attribute::FromUser\n          name: created_at\n          value_before_type_cast: *1\n          type: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter\n            subtype: *2\n          value: *1\n        updated_at: !ruby/object:ActiveRecord::Attribute::FromUser\n          name: updated_at\n          value_before_type_cast: *1\n          type: !ruby/object:ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter\n            subtype: *2\n          value: *1\n  new_record: false\n  active_record_yaml_version: 0\nmethod_name: :update_name\nargs:\n- after_async\n"], ["run_at", "2016-06-11 05:08:24.300926"], ["created_at", "2016-06-11 05:08:24.301219"], ["updated_at", "2016-06-11 05:08:24.301219"]]
   (11.1ms)  commit transaction
=> #<Delayed::Backend::ActiveRecord::Job id: 1, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMethod\nobject...", last_error: nil, run_at: "2016-06-11 05:08:24", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2016-06-11 05:08:24", updated_at: "2016-06-11 05:08:24">
u
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">
User.last
  User Load (0.3ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" DESC LIMIT 1
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 非同期テーブルに入ってるか確認
  • 別バックエンドならActiveRecordが違うネームスペースになりそう
Delayed::Backend::ActiveRecord::Job.first
  Delayed::Backend::ActiveRecord::Job Load (0.2ms)  SELECT  "delayed_jobs".* FROM "delayed_jobs"  ORDER BY "delayed_jobs"."id" ASC LIMIT 1
=> #<Delayed::Backend::ActiveRecord::Job id: 1, priority: 0, attempts: 0, handler: "--- !ruby/object:Delayed::PerformableMethod\nobject...", last_error: nil, run_at: "2016-06-11 05:08:24", locked_at: nil, failed_at: nil, locked_by: nil, queue: nil, created_at: "2016-06-11 05:08:24", updated_at: "2016-06-11 05:08:24">

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 変わったか確認
  • 変わってない?
irb(main):034:0> User.last
  User Load (0.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" DESC LIMIT 1
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">
irb(main):035:0> u
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">
irb(main):036:0> u.reload
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 6]]
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">
irb(main):037:0> Delayed::Backend::ActiveRecord::Job.count
   (0.2ms)  SELECT COUNT(*) FROM "delayed_jobs"
=> 0
irb(main):038:0> u
=> #<User id: 6, name: "async_before", created_at: "2016-06-11 05:07:38", updated_at: "2016-06-11 05:07:38">

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 実行はされている
    • delayd_jobのテーブルが無くなってる

'''
[Worker(host:MBA.local pid:46727)] Starting job worker
[Worker(host:MBA.local pid:46727)] Job User#update_name (id=1) RUNNING
[Worker(host:MBA.local pid:46727)] Job User#update_name (id=1) COMPLETED after 0.0196
[Worker(host:MBA.local pid:46727)] 1 jobs processed at 15.6516 j/s, 0 failed
'''

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 更新されない
  • databaseからキューは消えてる
    • 実行もされているログは出ている
  • データは変わってない
  • ログファイルの一を探す

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • ログ見つつ実行
  • tail -f log/development.log
  • 実行はされているみたい?
t IS NULL)  ORDER BY priority ASC, run_at ASC LIMIT 5
  SQL (51.0ms)  UPDATE "delayed_jobs" SET "locked_at" = '2016-06-11 05:29:20.436216', "locked_by" = 'host:MBA.local pid:46727' WHERE "delayed_jobs"."id" IN (SELECT "delayed_jobs"."id" FROM "delayed_jobs" WHERE ((run_at <= '2016-06-11 05:29:20.435786' AND (locked_at IS NULL OR locked_at < '2016-06-11 01:29:20.435800') OR locked_by = 'host:MBA.local pid:46727') AND failed_at IS NULL) AND "delayed_jobs"."id" = ?  ORDER BY priority ASC, run_at ASC)  [["id", 3]]
  Delayed::Backend::ActiveRecord::Job Load (0.3ms)  SELECT  "delayed_jobs".* FROM "delayed_jobs" WHERE "delayed_jobs"."id" = ? LIMIT 1  [["id", 3]]
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 6]]
2016-06-11T14:29:20+0900: [Worker(host:MBA.local pid:46727)] Job User#update_name (id=3) RUNNING
   (0.1ms)  begin transaction
   (0.1ms)  commit transaction
   (0.1ms)  begin transaction
  SQL (0.5ms)  DELETE FROM "delayed_jobs" WHERE "delayed_jobs"."id" = ?  [["id", 3]]
   (55.9ms)  commit transaction
2016-06-11T14:29:20+0900: [Worker(host:MBA.local pid:46727)] Job User#update_name (id=3) COMPLETED after 0.0597

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • printfデバッグ
  • 以下のように変更
class User < ActiveRecord::Base
  def update_name(new_name)
    puts new_name
    name = new_name
    save
  end
end
irb(main):002:0> u.update_name('test')
test
   (0.1ms)  begin transaction
  SQL (0.3ms)  UPDATE "users" SET "name" = ?, "updated_at" = ? WHERE "users"."id" = ?  [["name", "test"], ["updated_at", "2016-06-11 05:34:36.231199"], ["id", 8]]
   (49.6ms)  commit transaction
=> true
irb(main):003:0> u.
Display all 375 possibilities? (y or n)
irb(main):003:0> User.last
  User Load (0.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" DESC LIMIT 1
=> #<User id: 8, name: "test", created_at: "2016-06-11 05:34:30", updated_at: "2016-06-11 05:34:36">

User.last
  User Load (0.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" DESC LIMIT 1
=> #<User id: 8, name: "test_async", created_at: "2016-06-11 05:34:30", updated_at: "2016-06-11 05:35:11">

できてた

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • activerecordの謎挙動

u.nameではアクセスできるのに、インスタンスメソッド内部で

  def update_name(new_name)
    name = new_name
    save
  end

とやるとアクセスできない…(´・_・`)?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • priorityのテスト
  • 低いやつと高いやつで上書きする
  • priority無しでは順に実行して順に処理→最終的に2回目の方に
  • priorityありにして、低いやつ高いやつで実行→最終的に低いやつの方になるはず

prority無し

  def update_name_low(new_name)
    self.name = new_name
    save
  end

  def update_name_high(new_name)
    self.name = new_name
    save
  end
u = User.last
u.delay.update_name_low('low_name')
u.delay.update_name_high('hih_name')
User.last # not change
  User Load (0.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" DESC LIMIT 1
=> #<User id: 8, name: "test_async", created_at: "2016-06-11 05:34:30", updated_at: "2016-06-11 05:35:11">

bundle exec rake jobs:work
実行

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • readme読み直した
  • rails2はもう要らないのでは?

rails 2 not support
so delete this line?
See the 2.0 branch for Rails 2.

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

bundle exec rakeが正しいのか
bin/rakeが正しいのか?

railsのおすすめドキュメントにどう書いてあるか

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • そもそもbin/rakeで動くの?
  • ./bin/rake db:drop
    Running via Spring preloader in process 79829
  • springが邪魔をして動いてるかわからない…?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • bundle exec rake db:dropではログが出ないので正しい挙動だ

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • rakeだとエラーになる
  • bin/rakeだとエラーにならない
rake db:migrate
rake aborted!
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 11.1.2. Prepending `bundle exec` to your command may solve this.

bin/rake

bin/rake db:migrate
Running via Spring preloader in process 85569
== 20160611022955 CreateDelayedJobs: migrating ================================
-- create_table(:delayed_jobs, {:force=>true})
   -> 0.0041s
-- add_index(:delayed_jobs, [:priority, :run_at], {:name=>"delayed_jobs_priority"})
   -> 0.0008s
== 20160611022955 CreateDelayedJobs: migrated (0.0051s) =======================

== 20160611045154 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0006s
== 20160611045154 CreateUsers: migrated (0.0007s) =============================

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • delayed_jobはrails3も対象なので、rails 3で使えないbin/rakeは使えない
  • rails2は別ブランチ
  • bundle install してるのにbundle execしないのおかしい
    • bundle exec 必須にするのは正しいのか?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • こんな感じで送る
このgemのセットアップ手順ではbundle installしてる。
実行する段階では
rails generate delayed_job:active_record
rake db:migrate

となってるので、system rakeが使われる。
system rakeとbundle installによってインストールされたrakeバージョンは異なる場合がある。
bundle installで入れる事を前提としているなら、Readmeのコマンドも
bundle exec rails generate delayed_job:active_record
bundle exec rake db:migrate
とbundle execをつけるべき



% rake db:migrate
rake aborted!
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 11.1.2. Prepending `bundle exec` to your command may solve this.
/workspace/delayed_job_test/config/boot.rb:3:in `<top (required)>'
/workspace/delayed_job_test/config/application.rb:1:in `<top (required)>'
/workspace/delayed_job_test/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- bundler/setup
/workspace/delayed_job_test/config/boot.rb:3:in `<top (required)>'
/workspace/delayed_job_test/config/application.rb:1:in `<top (required)>'
/workspace/delayed_job_test/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

  • 聞かないと問題ないかわからないので、聞こう

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

In the README.md, use bundle install.
And gerenate database command like this.

rails generate delayed_job:active_record
rake db:migrate

But, this command not use bundler's rails and rake.
So, when rails&rake in global and in Gemfile.lock are different version,
we got error like this.

% rake db:migrate
rake aborted!
Gem::LoadError: You have already activated rake 10.4.2, but your Gemfile requires rake 11.1.2. Prepending `bundle exec` to your command may solve this.
/workspace/delayed_job_test/config/boot.rb:3:in `<top (required)>'
/workspace/delayed_job_test/config/application.rb:1:in `<top (required)>'
/workspace/delayed_job_test/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- bundler/setup
/workspace/delayed_job_test/config/boot.rb:3:in `<top (required)>'
/workspace/delayed_job_test/config/application.rb:1:in `<top (required)>'
/workspace/delayed_job_test/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

So we should use bundle exec when setup database table.

Same problem in this line.

rails generate delayed_job:upgrade
rake db:migrate

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

The rails 2.x is very old, and it's no longer supported.
(http://guides.rubyonrails.org/maintenance_policy.html)

So I think this link is not necessary.

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

なんでacive_jobから切り替える必要あるのか?

@ota42y
Copy link
Contributor Author

ota42y commented Jun 11, 2016

メンターがおかしいぞ?ってぼやいていたので空き時間にさくっと。
fluent/fluentd-docs#229

@kou
Copy link
Member

kou commented Jun 12, 2016

お疲れさまでした!

@kou kou closed this as completed Jun 12, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants