On Friday, July 8, 2016 at 10:03:42 AM UTC-7, Alex M wrote:
>
> Hi
>
> My project: Sinatra(modular) - SQLite3 - Sequel on sharing host (Apache, 
> FastCGI, ruby 1.9.3,)
>
> It uses the existing database tables: 'articles' and 'properties'
> Accordingly, models: 
>
>   class Article < Sequel::Model
>   end
>   
>   class Property < Sequel::Model
>   end
>   
>   
>  Plan:
>    
>    Create an new record (Property.new) in 'properties'table: INSERT INTO 
> `properties` (`name`, `desc`, `tags`) VALUES ('Property_1', 'Color', 
> 'red,black,other')
>      after, create column in 'articles' with 'property' name: ALTER TABLE 
> `articles` ADD COLUMN `property_1` text
>        and create new record (Article.new) in 'articles' table with new 
> attribute: INSERT INTO `articles` (`property1`, `text`) VALUES ('red', 
> 'loremipsumloremipsum')
>
>   route 'post' in Sinatra:
>   
>       post '/article/submit' do
>       
>       #Variant 1 Doesnt work
>         db.schema(:articles, :reload=>true) #return fresh data with new 
> attribute: [id, text, property_1]
>         Article.set_dataset :articles 
>         ### Check dataset: Article.column #but dataset did not change
>          ### return: [:id, :text] 
>
>       #Variant 2 Work
>         Article.send('get_db_schema',:true)  
>       ###
>       ### Check dataset: Article.column
>           ### [:id, :text, :property_1] 
>         
>         begin       
>         article = Article.new(params[:article])
>         rescue => e
>           puts e # sometimes: "method {name new property}= doesn't exists"
>         end
>         
>         if article.save
>           
>             flash[:success] = "success"       
>             redirect back
>              
>             else
>               flash[:error] = "error"
>               redirect back
>         end 
>      `end
>
>     It always work on the development machine (ruby 1.9.3, rerun, last 
> Sinatra and Sequel).
>     But in production on host, sometimes an error: "method {name new 
> property}= doesn't exists".
>     After a while you repeat the operation all success.
>     In case of an error, 
>       'Article.send('get_db_schema',:true)', 'Article.set_dataset 
> :articles ', 'Article.column' return old data, it can be seen in the logs.
>       
>     What can be linked such a problem?
>     
>     Thank you in advance
>

Maybe you are running multiple processes in production, but only one 
process reloads the schema?  In any case, you should redesign your app so 
it doesn't modify the schema at runtime.

Thanks,
Jeremy

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to