RoR, Judge Judy, and little old ladies

Don Clugston dac at nospam.com.au
Tue Feb 20 05:35:15 PST 2007


Andrei Alexandrescu (See Website For Email) wrote:
> Bruno Medeiros wrote:
>> Sean Kelly wrote:
>>> Bruno Medeiros wrote:
>>>> Sean Kelly wrote:
>>>>> Bruno Medeiros wrote:
>>>>>> Robby wrote:
>>>>>>> Bruno Medeiros wrote:
>>>>>>>> In both cases, Ruby code is generated from
>>>>>>>> code in these two DSLs, but that code generation is performed 
>>>>>>>> not by the Ruby compiler during compile-time, but by an external 
>>>>>>>> tool (similar to parser generators for example).
>>>>>>> No, it's done with Ruby during run time, using Ruby's dynamic and 
>>>>>>> reflective abilities.
>>>>>>
>>>>>> Hum, I had understood scaffolding to be the process where it 
>>>>>> generated Ruby code by looking at the DB schema. So if I change 
>>>>>> the DB schema, I don't have to run scaffolding again? I only need 
>>>>>> to restart the web app, since it can reflectively and dynamically 
>>>>>> create its own ORM logic?
>>>>>
>>>>> Unless you actually want to do something with that data, I assume.
>>>>
>>>> What do you mean? I am of course talking in the case where the web 
>>>> app works with the data, otherwise the point of needing or not 
>>>> needing to restart the app was moot.
>>>
>>> So say you modify your schema and the application self-adapts.  
>>> Unless it is designed to merely pass all data through to the user 
>>> (which may be common in web apps), the app will require some 
>>> specialized code to operate on the data to achieve the desired 
>>> result.  This obviously cannot be generated automatically because 
>>> only the programmer knows what it should be.
>>>
>>>
>>> Sean
>>
>> I suspect we're not understanding each other well. Of course business 
>> logic is something that only the programmer knows, and the app cannot 
>> generate that, but I'm not talking about actual business logic,  just 
>> simple domain object creating, deletion, editing (and respective ORM 
>> logic). Consider this pic from the article:
>> http://www.onlamp.com/onlamp/2006/12/14/graphics/figure011.gif
>> where the web app allows to create a domain object (recipe). That 
>> functionality is automatically generated from the SQL tables, it is 
>> achieved without any code written (except for SQL table creation).
>> My question was whether this functionality was generated at "pre-run" 
>> time (the scaffolding external tool), or at runtime (by the Ruby 
>> webapp and it's dynamic capabilities).
> 
> Yah, I have the same question. My current understanding is that 
> generation is done statically (e.g. you must run the xyz program after 
> you update your database structure...), which makes D's capability of 
> doing that during compilation very attractive.
> 
> Andrei

I don't think it is static, based on this quote:

When Active Record first uses a particular model, it goes to the 
database and determines the column set of the corresponding table. From 
there it constructs a set of Column objects. These objects are 
accessible using the columns( ) class method, and the Column object for 
a named column can be retrieved using the columns_hash( ) method. The 
Column objects encode the database column’s name, type, and default value.
  -- Agile Development with Rails, section 15.6.




More information about the Digitalmars-d mailing list