The ticket:
http://datamapper.lighthouseapp.com/projects/20609/tickets/999-dm-types-yaml-reverted-to-using-string-rather-than-text-type

Until this is fixed, you cannot use Yaml fields with MySQL unless you use my
(lame) monkeypatch.

..tony..

On Thu, Oct 1, 2009 at 2:19 PM, Tony Mann <[email protected]> wrote:

> Hello,
> I mentioned this problem recently, and was told that there is a ticket for
> it. In the meantime, you can use this monkeypatch:
>
> # Make Yaml type use TEXT
> module DataMapper
>   module Migrations
>     module DataObjectsAdapter
>       module ClassMethods
>         alias _type_map type_map
>         def type_map
>           t = _type_map.dup
>           t[Types::Yaml]  = { :primitive => 'TEXT' }
>           t
>         end
>       end
>     end
>   end
> end
>
> This should be considered a temporary fix, though.
>
> ..tony..
>
> On Thu, Oct 1, 2009 at 12:26 PM, sliu <[email protected]> wrote:
>
>>
>> dm 0.10.1
>> mysql: 5.0.75-0ubuntu10.2-log (Ubuntu)
>>
>> given a line in a model:
>> property :vars, Yaml
>>
>> call DataMapper.auto_migrate! will cause exception:
>>
>> /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-core/
>> migrations.rb:147:in `execute_non_query': Column length too big for
>> column 'vars' (max = 21845); use BLOB or TEXT instead
>> (DataObjects::SQLError)
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/migrations.rb:147:in `create_model_storage'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/adapters/data_objects_adapter.rb:266:in `with_connection'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/migrations.rb:144:in `create_model_storage'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/migrations.rb:1166:in `create_model_storage'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/migrations.rb:1260:in `auto_migrate_up!'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/migrations.rb:49:in `send'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/migrations.rb:49:in `repository_execute'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/model/descendant_set.rb:33:in `each'
>>         ... 8 levels...
>>
>>
>> I looked into dm-types-0.10.1/lib/dm-types/yaml.rb,  found the
>> following code:
>>
>> module DataMapper
>>  module Types
>>    class Yaml < DataMapper::Type
>>      primitive String
>>      length    65535
>>      lazy      true
>>
>> change `primitive String` to `primitive Text`, raise the following
>> exception:
>>
>> /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-core/
>> property.rb:784:in `initialize': +type+ was DataMapper::Types::Yaml,
>> which is not a supported type (ArgumentError)
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/model/property.rb:51:in `new'
>>        from /usr/local/ruby/lib/ruby/gems/1.8/gems/dm-core-0.10.1/lib/dm-
>> core/model/property.rb:51:in `property'
>>        from /home/sliu/project/workflow/workflow/engine/execution.rb:9
>>        from /usr/local/ruby/lib/ruby/site_ruby/1.8/rubygems/
>> custom_require.rb:31:in `gem_original_require'
>>        from /usr/local/ruby/lib/ruby/site_ruby/1.8/rubygems/
>> custom_require.rb:31:in `require'
>>
>>
>> when I change back to `primitive String` and comment out the line
>> `length 65535`, it become OK.
>>
>> I don't know the exact reason.
>> Hope someone help to indicate and fix it.
>> Thanks.
>>
>>
>>
>>
>> >>
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
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/datamapper?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to