Bildereklame vises kun når du ikke er logget inn. Registrer deg eller logg inn for å kun vise tekstreklame.
Svar
 
Trådverktøy
Gammel 28. april 2012, 01:37   #1
etse
Ukjent
etse's Avatar
 
Medlem siden: sep. 2004
Innlegg: 5.388 / KP: 3203
Ruby on rails - Kode funker ikke på production server

Jeg har en kode som fungerer helt fint på den lokale maskinen min og som kjører helt fint på serveren gjennom test-serveren (som man kjører mest kommandoen "rails s")

Når jeg derimot velger å teste websiden på serveren min funker den for det meste, bortsett fra en liten men alvorlig bug, hvor den gir meg følgende feilmelding.

Sitat:
ActiveModel::MissingAttributeError (missing attribute: UID):
app/controllers/application_controller.rb:114:in `block in getMembersForTask'
app/controllers/application_controller.rb:113:in `each'
app/controllers/application_controller.rb:113:in `getMembersForTask'
app/controllers/tasks_controller.rb:190:in `show'
Dette kommer fra følgende kode:
Kode:
def getMembersForTask(taskId)
     usersTask = TaskUsers.where(:TID => @task.id)

     usersList = []
     usersTask.each do |u|
       tmpUser = Users.find_by_id(u.UID)
       @member = Member.new(tmpUser.id, tmpUser.name, tmpUser.lastname, @privilegeMap[u.privilege - 1])
       usersList.push(@member)
     end
end
Her er TaskUsers en modell (les: table i databasen) med følgende schema:
Kode:
  create_table "task_users", :force => true do |t|
    t.integer  "TID"
    t.integer  "UID"
    t.integer  "privilege"
    t.datetime "created_at"
    t.datetime "updated_at"
  end
Model-filen:
Kode:
class TaskUsers < ActiveRecord::Base
	attr_accessible(:TID, :UID, :privilege, :created_at, :updated_at)
	
	validates	:TID, :presence => true
	validates	:UID, :presence => true
	
	before_save :default_values
  
  def default_values
    self.privilege = 4 unless self.privilege
  end
	
end
Noen her som har noen gode forslag på hvorfor dette kun skjer på en production-server med apache og physion-passenger, men ikke på den innebyggede development serveren?
Det som gjør det enda merkeliggere er at feilen forsvinner om jeg restarter serveren - men kommer tilbake om lager en ny "Task" på siden (noe som fører til at det kommer en ny rad i TaskUsers-tabellen).

A programmer is a tool for converting caffeine into code.
Følg meg på GitHub
Sist endret av etse; 28. april 2012 kl. 01:41.
Svar på og siter dette innlegget
Gammel 28. april 2012, 13:49   #2
flexd
Tittelninja
flexd's Avatar
 
Medlem siden: des. 2005
Innlegg: 1.824 / KP: 373
Users.UID finnes ikke i tabellen. Har du kjørt rake db:create og rake db:migrate med RACK_ENV satt til production?

Svar på og siter dette innlegget
Gammel 28. april 2012, 14:12   #3
etse
Ukjent
etse's Avatar
 
Medlem siden: sep. 2004
Innlegg: 5.388 / KP: 3203
hei takker for svar.
Kan være det var det som var problemet, jeg løste problemet i går uten å helt vite hva jeg gjorde -e men en av tingene var å kjøre kommendoen "bundle exec rake assetsrecompile"

Men det som er merkelig er at mange ting fungerte jo. Altså ting som avhenget av databasen. Den fikk skrevet ting til databaen, og hentet informasjon ut. Og fikk laget mange beskjeder på siden, som jeg også kunne lese. Men det var kun dette ene feltet i tabellen som ikke fungerte.

A programmer is a tool for converting caffeine into code.
Følg meg på GitHub
Svar på og siter dette innlegget
Svar
Trådverktøy