I have the following environment variables for mystore environment in *database.yml:*
mystore: adapter: oracle_enhanced host: <%= ENV['mystore_db_host']%> port: <%= ENV['mystore_db_port']%> database: <%= ENV['mystore_db_name']%> username: <%= ENV['mystore_db_user']%> password: <%= ENV['mystore_db_password']%> defined in 'development' section in *application.yml* (I'm using Figaro gem): development: mystore_db_port: "XXXX" mystore_db_name: "XXXX" mystore_db_user: "XXXX" mystore_db_password: "XXXX" test: client_id: "XXX" client_secret: "XXX .... Should I add them to *test section* as well ? On Thu, 28 Jun 2018 at 09:37, Jon Rowe <[email protected]> wrote: > Sorry, no it doesn’t, RSpec doesn’t do *any* database connection work. > > Your code is trying to access the database :mystore from your > `config/database.yml` as thats what you’ve told it to do, perhaps your > environment variables are empty on your local machine? > > Jon Rowe > --------------------------- > [email protected] > jonrowe.co.uk > > On Wednesday, 27 June 2018 at 16:06, belgoros wrote: > > > > On Wednesday, 27 June 2018 17:04:35 UTC+2, belgoros wrote: > > > > On Wednesday, 27 June 2018 16:26:36 UTC+2, Jon Rowe wrote: > > > Sure, I'd like to write some tests and I had an impression that when > accessing a class that used mystore connection, RSpec tried to use the > default connection defined in test group of database.yml. Is the way I'm > truing to do that in testing correct ? > > No, RSpec doesn’t do *any* database configuration, Rails will use the > environment named configuration by default, but `establish_connection` > *should* override it. > > If it’s not behaving as you expect you might want to check that Rails is > loading your files correctly (as until `establish_connection` is called you > won’t have configured the other database). > > > Finally, it does not work as expected when using > > establish_connection(:mystore) unless Rails.env.test? > > If I use just > > establish_connection(:mystore) > > I have another error when calling new on one of the *mystore* DB models: > > ORA-12162: TNS:net service name is incorrectly specified > > Does RSpec tries to access mystore_test table ? > > > > Sorry, I meant *mystore_test* *database. *Thank you. > > > Cheers > > Jon Rowe > --------------------------- > [email protected] > jonrowe.co.uk > > On Wednesday, 27 June 2018 at 14:48, Serguei Cambour wrote: > > Thank you John ! > What I need is to migrate some data from one DB (*mystore* connection) to > another. That's why I had to write some specific Rake tasks to match tables > attributes to be imported (*mystore* connection) to another DB defined in > development group in *database.yml*. Sure, I'd like to write some tests > and I had an impression that when accessing a class that used *mystore* > connection, RSpec tried to use the default connection defined in test group > of *database.yml.* Is the way I'm truing to do that in testing correct ? > Thank you. > > On Wed, 27 Jun 2018 at 15:43, Jon Rowe <[email protected]> wrote: > > Sorry I misunderstood your question! > > What you need to do is specify multiple environments for your second > database, so you can establish an environment specific connection. As you > can see from your own configuration thats the standard pattern, so you > could then use `establish_connection` with the appropriate db e.g. > `establish_connection(:”mystore_#{Rails.env}”)` and have a test version of > your second DB > > Cheers > Jon Rowe > --------------------------- > [email protected] > jonrowe.co.uk > > On Wednesday, 27 June 2018 at 14:06, belgoros wrote: > > I had to modify my base class by adding > unless Rails.env.test? > > condition: > > > module MystoreMigration > class MystoreModel < ActiveRecord::Base > self.abstract_class = true > establish_connection(:mystore) unless Rails.env.test? > end > end > > > All other model classes used by rake tasks inherit from the above model. > In this case I'll have to mock all the DB calls related to this rake task > to avoid it to establish *mystore* connection defined in `database.yml` > and used by all the tasks models. > > > > On Wednesday, 27 June 2018 14:16:22 UTC+2, Jon Rowe wrote: > > Hi Javix > > RSpec itself has no database integration so it's certainly possible, > you'll need to either configure a connection manually to talk through or > use however you'd normally talk to your other database. > > If you’re using rspec-rails you’ll need to figure out how Rails does it’s > transactional testing for multiple databases, but most 3rd party gems > support “cleaning” multiple databases, including DatabaseCleaner. > > HTH > Jon > > On Wed, 27 Jun 2018 at 09:53, Javix <[email protected]> wrote: > > I need to execute some rake tasks agains a database other than defined in > database.yml, test group. Here is how database.yml looks like: > > default: &default > adapter: postgresql > encoding: unicode > user: postgres > password: > pool: 5 > > > development: > <<: *default > database: decastore_development > host: <%= ENV['DECASTORE_DATABASE_HOST'] %> > > > test: > <<: *default > database: decastore_test > host: <%= ENV['DECASTORE_DATABASE_HOST'] %> > > > production: > <<: *default > host: <%= ENV['DECASTORE_DATABASE_HOST'] %> > database: XXXX > username: XXXXX > password: <%= ENV['DECASTORE_DATABASE_PASSWORD'] %> > > > mystore: > adapter: oracle_enhanced > host: <%= ENV['mystore_db_host']%> > port: <%= ENV['mystore_db_port']%> > database: <%= ENV['mystore_db_name']%> > username: <%= ENV['mystore_db_user']%> > password: <%= ENV['mystore_db_password']%> > > > Is it possible to mix 2 database settings when running tests or I have to > mock it everywhere ? > Thank you. > > -- > You received this message because you are subscribed to the Google Groups > "rspec" 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/f723fd63-26b2-4ff7-a9ff-b8a3a69567f3%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/f723fd63-26b2-4ff7-a9ff-b8a3a69567f3%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "rspec" 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/b5fa5aad-7a2a-4b53-875f-8bda30682c1d%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/b5fa5aad-7a2a-4b53-875f-8bda30682c1d%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "rspec" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/rspec/sbRqzLR_Lug/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/74587C34A93D431CB66AE4B35D84EC2B%40jonrowe.co.uk > <https://groups.google.com/d/msgid/rspec/74587C34A93D431CB66AE4B35D84EC2B%40jonrowe.co.uk?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > -- > You received this message because you are subscribed to the Google Groups > "rspec" 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/CAJGQ%3DvbsA2GkxtTuUCqKSChAe8YRf-Yeafv68qgSFvQ5X8qCXw%40mail.gmail.com > <https://groups.google.com/d/msgid/rspec/CAJGQ%3DvbsA2GkxtTuUCqKSChAe8YRf-Yeafv68qgSFvQ5X8qCXw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to the Google Groups > "rspec" 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]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/4b796b81-d1ce-4109-827f-efccf085d743%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/4b796b81-d1ce-4109-827f-efccf085d743%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "rspec" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/rspec/sbRqzLR_Lug/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/2EDF7B26264448B5BE512774CA7A042F%40jonrowe.co.uk > <https://groups.google.com/d/msgid/rspec/2EDF7B26264448B5BE512774CA7A042F%40jonrowe.co.uk?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "rspec" 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/rspec/CAJGQ%3DvY8y2mYyC44DTTm2qppoCzCw11LvDv7%3DdC6eVyRJG%3DeMw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
