Forum: Ruby on Rails rails ignoring the migration file

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
M Daggett (Guest)
on 2006-01-09 08:36
(Received via mailing list)
I have a mysql database that I am trying to use migrations on. The
problem that I am having is that when I create a blob field in my
migration file like so:

t.column "data", :binary, :limit => 15.megabytes, :null => false

rails changes it to this in the schema:

t.column "data", :binary, :default => "", :null => false

not only is this not what I wanted because it removes the size
restrictions it also blows up when you try to do rake db_import_schema
with this error:

site_path>rake db_schema_import
(in D:/sites/itsthes/itsthes-ruby/itsthes)
rake aborted!
undefined method `string_to_binary' for
ActiveRecord::ConnectionAdapters::ColumnDefinition:Class


Is anyone else know why this is happening? Does anyone else have a
problem with rails converting values in the schema.rb to something
other than what is in the migration file?

Thanks,
Mark

--
Jarkko L. (Guest)
on 2006-01-09 13:44
(Received via mailing list)
On 9.1.2006, at 8.35, M Daggett wrote:

> not only is this not what I wanted because it removes the size
> Is anyone else know why this is happening? Does anyone else have a
> problem with rails converting values in the schema.rb to something
> other than what is in the migration file?

Mark,

I don't know about the changing schema definition but I know why your
migration fails. string_to_binary is for some reason in Column class,
not in ColumnDefinition where it should be. This is a reported bug
(see [1] and [2]). I'm preparing a patch with failing tests at the
moment, will post it tonight.

//jarkko

[1] http://dev.rubyonrails.org/ticket/3101
[2] http://dev.rubyonrails.org/ticket/3212
M Daggett (Guest)
on 2006-01-09 22:30
(Received via mailing list)
Thanks Jarkko,
I was noticing that too when I went to call through the codebase
looking for the method. I was able to get around my problem by loading
my binary requirements into a later migration file, which overwrote
the schema.rb



On 1/9/06, Jarkko L. <removed_email_address@domain.invalid> wrote:
> >
> > ActiveRecord::ConnectionAdapters::ColumnDefinition:Class
> not in ColumnDefinition where it should be. This is a reported bug
> > Thanks,
>
> http://lists.rubyonrails.org/mailman/listinfo/rails
>
>
>
>


--
M Daggett (Guest)
on 2006-01-09 23:15
(Received via mailing list)
I know this is probably a bad thing to do, but I modified the
ColumnDefinition class inside schema_definitions.rb  to include the
self.string_to_binary method like so:

class ColumnDefinition < Struct.new(:base, :name, :type, :limit,
:default, :null) #:nodoc:
      def to_sql
        column_sql = "#{base.quote_column_name(name)}
#{type_to_sql(type.to_sym, limit)}"
        add_column_options!(column_sql, :null => null, :default =>
default)
        column_sql
      end

      # added to fix missing method error when running rake tests
      # Used to convert from Strings to BLOBs
      def self.string_to_binary(value)
        value
      end



It appears to be working now for both unit testing and migrations...
though I may have broken something else I have not found yet!

Mark

On 1/9/06, M Daggett <removed_email_address@domain.invalid> wrote:
> > On 9.1.2006, at 8.35, M Daggett wrote:
> > >
> > >
> > moment, will post it tonight.
> > >
> > Jarkko L.
> >
> >
> >
>
>
> --
> --------------------------------------------------------------------
> I am Mark Daggett and I approve this message.
>


--
This topic is locked and can not be replied to.