G'day

Prolog: In a spare hour of my life I had decided to dive into the 
Ruby/Rails/Hobo world and just check out the inspiring agility tutorial. 
After all, I had all the requirements installed on my Mac OS X 10.6.8, and 
so I would just need to follow easy to grasp instructions. And boy, was I 
in for a surprise! Being more of a kernel developer as my background, I 
haven't done any sorts web application development probably since 1999 (if 
you could call it that back then); and it was done mostly in C, shell and 
Perl. After one hour joyfully following the easy instructions (without 
really understanding at depth what I was changing from step to step), I had 
pretty much a working web app which would have probably cost me days if not 
weeks to develop using my antiquated (or rather inadequate) technology 
stack. But I got stuck in the process of adding "Task re-ordering".

Problem description: Let me just dump my session here, without further ado:

$ rails plugin install git://github.com/swanandp/acts_as_list.git
Initialized empty Git repository in 
/Users/moreaki/Work/OpenSource/webapps/hobo/agility/vendor/plugins/acts_as_list/.git/
remote: Counting objects: 45, done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 45 (delta 13), reused 22 (delta 1)
Unpacking objects: 100% (45/45), done.
>From git://github.com/swanandp/acts_as_list
 * branch            HEAD       -> FETCH_HEAD
$ vi app/models/story.rb 
$ vi app/models/task.rb 
$ git diff
diff --git a/app/models/story.rb b/app/models/story.rb
index ee47f9c..6b6cb02 100644
--- a/app/models/story.rb
+++ b/app/models/story.rb
@@ -11,7 +11,7 @@ class Story < ActiveRecord::Base
   belongs_to :project
   belongs_to :status, :class_name => "StoryStatus"
 
-  has_many :tasks, :dependent => :destroy
+  has_many :tasks, :dependent => :destroy, :order => :position
 
   children :tasks
 
diff --git a/app/models/task.rb b/app/models/task.rb
index 90f7418..76320a6 100644
--- a/app/models/task.rb
+++ b/app/models/task.rb
@@ -12,6 +12,8 @@ class Task < ActiveRecord::Base
   has_many :task_assignments, :dependent => :destroy
   has_many :users, :through => :task_assignments, :accessible => true, 
:dependent => :destroy
 
+  acts_as_list :scope => :story
+
   # --- Permissions --- #
 
   def create_permitted?
$ hobo generate migration
Hobo Command Line Interface 1.3.2

---------- Up Migration ----------
add_column :tasks, :position, :integer
----------------------------------

---------- Down Migration --------
remove_column :tasks, :position
----------------------------------

What now: [g]enerate migration, generate and [m]igrate now or [c]ancel? m
  => "m"

Migration filename: [<enter>=hobo_migration_1|<custom_name>]: 
install_acts_as_list
  => "install_acts_as_list"
      create  db/migrate/20121014124445_install_acts_as_list.rb
        rake  db:migrate
==  InstallActsAsList: migrating 
==============================================
-- add_column(:tasks, :position, :integer)
   -> 0.0018s
==  InstallActsAsList: migrated (0.0019s) 
=====================================
$ vi app/views/taglibs/application.dryml 
$ vi app/views/tasks/edit.dryml
$ git diff
diff --git a/app/models/story.rb b/app/models/story.rb
index ee47f9c..6b6cb02 100644
--- a/app/models/story.rb
+++ b/app/models/story.rb
@@ -11,7 +11,7 @@ class Story < ActiveRecord::Base
   belongs_to :project
   belongs_to :status, :class_name => "StoryStatus"
 
-  has_many :tasks, :dependent => :destroy
+  has_many :tasks, :dependent => :destroy, :order => :position
 
   children :tasks
 
diff --git a/app/models/task.rb b/app/models/task.rb
index 90f7418..76320a6 100644
--- a/app/models/task.rb
+++ b/app/models/task.rb
@@ -12,6 +12,8 @@ class Task < ActiveRecord::Base
   has_many :task_assignments, :dependent => :destroy
   has_many :users, :through => :task_assignments, :accessible => true, 
:dependent => :destroy
 
+  acts_as_list :scope => :story
+
   # --- Permissions --- #
 
   def create_permitted?
diff --git a/app/views/taglibs/application.dryml 
b/app/views/taglibs/application.dryml
index c7bcf07..27537ee 100644
--- a/app/views/taglibs/application.dryml
+++ b/app/views/taglibs/application.dryml
@@ -18,6 +18,12 @@
   </old-card>
 </extend>
 
+<extend tag="form" for="Task">
+  <old-form merge>
+    <field-list: fields="description, users"/>
+  </old-form>
+</extend>
+
 <extend tag="page">
   <old-page merge>
     <footer:>
diff --git a/db/schema.rb b/db/schema.rb
index fe91e1a..840fb60 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended to check this file into your version control 
system.
 
-ActiveRecord::Schema.define(:version => 20121013223931) do
+ActiveRecord::Schema.define(:version => 20121014124445) do
 
   create_table "projects", :force => true do |t|
     t.string   "name"
@@ -51,6 +51,7 @@ ActiveRecord::Schema.define(:version => 20121013223931) do
     t.datetime "created_at"
     t.datetime "updated_at"
     t.integer  "story_id"
+    t.integer  "position"
   end
 
   add_index "tasks", ["story_id"], :name => "index_tasks_on_story_id"

And that's where things go havoc. Upon requesting the "projects" page in my 
browser, rails barks at me with the following wonderful error message:

Started GET "/projects" for 127.0.0.1 at Sun Oct 14 14:47:28 +0200 2012
  SQL (0.6ms)   SELECT name
 FROM sqlite_master
 WHERE type = 'table' AND NOT name = 'sqlite_sequence'


NoMethodError (undefined method `acts_as_list' for #<Class:0x107869db0>):
  app/models/task.rb:15
  app/controllers/tasks_controller.rb:5

Rendered 
/Users/moreaki/.gem/ruby/1.8/gems/actionpack-3.0.17/lib/action_dispatch/middleware/templates/rescues/_trace.erb
 
(1.2ms)
Rendered 
/Users/moreaki/.gem/ruby/1.8/gems/actionpack-3.0.17/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb
 
(1.4ms)
Rendered 
/Users/moreaki/.gem/ruby/1.8/gems/actionpack-3.0.17/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb
 
within rescues/layout (7.7ms)

Would anyone be willing to spare some precious minutes of his life to offer 
me a solution (and if willing, an explanation) to my current challenge?

Cheers and best regards



-- 
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/hobousers/-/dBpSjGchjR0J.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en.

Reply via email to