Forum: Ruby on Rails How to configure a PostgreSQL test database before testing?

Posted by David M (Guest)
on 2012-10-24 12:50
(Received via mailing list)
My website uses PostgreSQL and its full-text search. For that to work, I
need to execute some configuration queries in order to configure some
full-text search extensions.

This is what I have written in a migration file to configure the
development database:

class ConfigurePostgresql < ActiveRecord::Migration
  def up
    execute("CREATE EXTENSION unaccent;")
    execute("ALTER TEXT SEARCH DICTIONARY unaccent (RULES='unaccent');")
    execute("CREATE TEXT SEARCH CONFIGURATION es ( COPY = spanish );")
    execute("ALTER TEXT SEARCH CONFIGURATION es
      ALTER MAPPING FOR hword, hword_part, word
      WITH unaccent, spanish_stem;")
  end
end

This works perfectly in develpment.

Now I want to run some search tests, but when I execute my functional
tests, I get an error saying that the extension is not configured:

ActiveRecord::StatementInvalid: PG::Error: ERROR:  function 
unaccent(text) does not exist

Why is not it creating the extension? I have executed rake 
db:test:prepare
Posted by David M (Guest)
on 2012-10-24 13:07
(Received via mailing list)
I have noticed that those execute lines are not included in my 
schema.rb.
When I copy them inside the schema.rb, then all tests run correctly. Is
there some way to make this work well without having to copy the 
executes
everytime I make a migration?
Posted by Jim ruther Nill (jimboker)
on 2012-10-24 13:12
(Received via mailing list)
On Wed, Oct 24, 2012 at 6:49 PM, David M <idavemm@gmail.com> wrote:

>     execute("ALTER TEXT SEARCH DICTIONARY unaccent (RULES='unaccent');")
> tests, I get an error saying that the extension is not configured:
>
> ActiveRecord::StatementInvalid: PG::Error: ERROR:  function unaccent(text) does 
not exist
>
> Why is not it creating the extension? I have executed rake db:test:prepare
>
i think rake db:test:prepare uses schema.rb to create the test database.
 since you added raw sql, this is not added to schema.rb.  you should 
use
the sql format of schema.rb.  more info here
http://guides.rubyonrails.org/migrations.html#sche...


>
>



--
Posted by David M (Guest)
on 2012-10-24 13:31
(Received via mailing list)
Thanks jim, that solved the problem.


El mircoles, 24 de octubre de 2012 13:11:57 UTC+2, jim escribi:
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.