rake about > Environment staging

hi,

im using rvm + gemsets, but i dont know why rake always picks staging environment. i did not set this anywhere manually. any ideas?

thx

What’s the output of echo $RAILS_ENV ?

its empty

here are some values from ‘env’

MY_RUBY_HOME=/home/tom/.rvm/rubies/ruby-1.9.3-p194

rvm_bin_path=/home/tom/.rvm/bin

GEM_HOME=/home/tom/.rvm/gems/ruby-1.9.3-p194@mygemset

TERM=xterm

SHELL=/bin/bash

IRBRC=/home/tom/.rvm/rubies/ruby-1.9.3-p194/.irbrc

rvm_path=/home/tom/.rvm

escape_flag=1

rvm_prefix=/home/tom

MAIL=/var/mail/tom

PATH=/home/tom/.rvm/gems/ruby-1.9.3-p194@mygemset/bin:/home/tom/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/tom/.rvm/rubies/ruby-1.9.3-p194/bin:/home/tom/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin

LANG=en_US.UTF-8

_second=1

rvm_version=1.14.1 (stable)

SHLVL=1

HOME=/home/tom

_first=0

LOGNAME=tom

GEM_PATH=/home/tom/.rvm/gems/ruby-1.9.3-p194@mygemset:/home/tom/.rvm/gems/ruby-1.9.3-p194@global

install_flag=1

RUBY_VERSION=ruby-1.9.3-p194

_=/usr/bin/env

i did delete all rvm stuff, rebooted and reinstalled rvm. this is my rvmrc file:

rvm_trust_rvmrcs_flag=1

rvm use ruby-1.9.3-p194@mygemset --create

thx

what’s the content of Rakefile?

hi,

its just a simple rake import tasks (using :environment, but all my rake commands are affected, even a migration goes straight to staging…

namespace :import do

desc “import automobiles step1”

task :automobiles => :environment do

i’ve checked everything for staging, but i dont see what could point towards staging. ill try to setup a new system-user and rerun rvm setup with the same rvmrc file…

thx for any pointers

hi,
its just a simple rake import tasks (using :environment, but all my rake
commands are affected, even a migration goes straight to staging...

namespace :import do
desc "import automobiles step1"
task :automobiles => :environment do
.....
........

i've checked everything for staging, but i dont see what could point
towards staging. ill try to setup a new system-user and rerun rvm setup with
the same rvmrc file...

Does it run ok if you do something like
RAILS_ENV=development rake .....

no, it executes eg the migrations on the staging-db, but if i start up webrick via “rails s” it comes up the standard development environment

where does rake get the environment info if i ommit ‘RAILS_ENV’ when executing a rake command?

thx

no, it executes eg the migrations on the staging-db, but if i start up
webrick via "rails s" it comes up the standard development environment

Since you have top posted (rather than inline) I am not certain what
you are saying no to. Are you saying that if you do
RAILS_ENV=development rake db:migrate
that it runs on the staging environment and not development?

Colin

yes, thats correct

RAILS_ENV=development rake db:migrate

runs in staging env.

thx

Top posting still :frowning:

yes, thats correct

RAILS_ENV=development rake db:migrate

runs in staging env.

I don't understand why you then went on to ask

> where does rake get the environment info if i ommit 'RAILS_ENV' when
> executing a rake command?

Two points (please reply inline so that it makes it easier to follow
the thread. Thanks

1. How do you know that rake db:migrate is running in staging environment?

2. Please post database.yml here.

Colin

inline

Top posting still :frowning:

yes, thats correct

RAILS_ENV=development rake db:migrate

runs in staging env.

I don’t understand why you then went on to ask

where does rake get the environment info if i ommit ‘RAILS_ENV’ when

executing a rake command?

Two points (please reply inline so that it makes it easier to follow

the thread. Thanks

  1. How do you know that rake db:migrate is running in staging environment?

because the migrations are being executed on the staging-db (eg adding a new colum)

  1. Please post database.yml here.

database.yml is pretty much standard:

staging:

adapter: mysql2

encoding: utf8

reconnect: false

database: myproject_staging

pool: 5

username: myproject_dbuser

password: myproject_dbuser

socket: /var/run/mysqld/mysqld.sock

development:

adapter: mysql2

encoding: utf8

reconnect: false

database: myproject_development

pool: 5

username: myproject_dbuser

password: myproject_dbuser

socket: /var/run/mysqld/mysqld.sock

test:

adapter: mysql2

encoding: utf8

reconnect: false

database: myproject_test

pool: 5

username: myproject_dbuser

password: myproject_dbuser

socket: /var/run/mysqld/mysqld.sock

production:

adapter: mysql2

encoding: utf8

reconnect: false

database: myproject_production

pool: 5

username: myproject_dbuser

password: myproject_dbuser

socket: /var/run/mysqld/mysqld.sock

as i said, starting webrick works fine in different environments, whereas rake tasks always use “staging”, no matter what specify. here a sample of a migration:

rails g migration add name_to_testbooks name:string

/home/tom/.rvm/gems/ruby-1.9.3-p194@mygemset/gems/railties-3.2.1/lib/rails/script_rails_loader.rb:11: warning: Insecure world writable dir /home/tom in PATH, mode 040777

/home/tom/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:211: warning: Insecure world writable dir /home/tom in PATH, mode 040777

invoke active_record

create db/migrate/20120610111033_add.rb

tom@debian6ror3:~/rails3/myproject$ RAILS_ENV=development rake db:migrate --trace

/home/tom/.rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.4/lib/bundler/runtime.rb:211: warning: Insecure world writable dir /home/tom in PATH, mode 040777

** Invoke db:migrate (first_time)

** Invoke environment (first_time)

** Execute environment

** Invoke db:load_config (first_time)

** Invoke rails_env (first_time)

** Execute rails_env

** Execute db:load_config

** Execute db:migrate

== Add: migrating ============================================================

– add_column(:testbooks, :name, :string)

-> 0.3212s

== Add: migrated (0.3216s) ===================================================

** Invoke db:_dump (first_time)

** Execute db:_dump

** Invoke db:schema:dump (first_time)

** Invoke environment

** Invoke db:load_config

** Execute db:schema:dump

furthermore, removing staging from the database.yml results in rake telling me that it doesnt find a staging adapter - even though when i run in ''dev mode"

@rvm i installed a user-rvm, straight from the docs. does that interfere?

@ill setup a new user and rvm again, then reusing the GEMFILE/rvmrc

How about running: “export RAILS_ENV=development ; rake about”

What does rake report for Environment in this case?

How about running: "export RAILS_ENV=development ; rake about"

What does rake report for Environment in this case?

I had forgotten rake about, what does rake about show without setting RAILS_ENV?

Colin

I’m not really too up on rvm but I wonder…
Is it possible that your work environment, specifically the login shell that you are using to type commands in a terminal window, includes an alias for rake? Since staging is not one of the three default environments for RoR it had to be created with all rules for it’s use somewhere “outside” the vanilla system.
What I’m thinking is that somewhere you have a runtime command file (eg.: .bashrc, .cshrc, .profile, …) that contains a line:
alias rake='rake RAILS_ENV=staging’
To find out if this is so, type:
alias rake

Rick

good points rick, it lead me to the issue: my system-user groupmembership was wrong. i added for some other reasons my system user to the root and some other groups…that messed everythign up. using a new user, same rvmrc & Gemfile works again as expected.

thx