I'm trying to deploy to heroku and I'm having an issue:
when i run heroku rake db:seed (which creates the admin user in my db), rails returns that I have pending migrations.
I've deleted these migrations manually (which I shouldn't have, I know), how can I go around this ?
Charlie#CHARLIE-PC /c/rails/rails_projects/METACRITIC (master)
$ rake db:migrate
Charlie#CHARLIE-PC /c/rails/rails_projects/METACRITIC (master)
$ heroku run rake db:seed
Running `rake db:seed` attached to terminal... up, run.1
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support
for these plugins will be removed in Rails 4.0. Move them out and bundle them i
n your Gemfile, or fold them in to your app as lib/myplugin/* and config/initial
izers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonr
ails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required
)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support
for these plugins will be removed in Rails 4.0. Move them out and bundle them i
n your Gemfile, or fold them in to your app as lib/myplugin/* and config/initial
izers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonr
ails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required
)> at /app/Rakefile:7)
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support
for these plugins will be removed in Rails 4.0. Move them out and bundle them i
n your Gemfile, or fold them in to your app as lib/myplugin/* and config/initial
izers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonr
ails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required
)> at /app/Rakefile:7)
You have 2 pending migrations:
20121013054027 Addcolumnimagetoshow
20121013063205 AddAttachmentToShows
Run `rake db:migrate` to update your database then try again.
Charlie#CHARLIE-PC /c/rails/rails_projects/METACRITIC (master)
$
You were running your migrations locally (rake db:migrate) instead you should run the on heroku heroku run rake db:migrate
Related
I reset the database on Heroku in the database setting and ran heroku run rake db:migrate. Although it created all the data tables with correct columns per local database, it does not migrate any existing local data. Heroku database is just empty. In the past I ran the above code and worked fine but this time got stuck as shown below:
mac-a:skiny ran$ heroku run bundle exec rake db:migrate
Running bundle exec rake db:migrate on ⬢ blooming-citadel-66205... up, run.3076 (Hobby)
The PGconn, PGresult, and PGError constants are deprecated, and will be
removed as of version 1.0.
You should use PG::Connection, PG::Result, and PG::Error instead, respectively.
Called from /app/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
ActiveRecord::SchemaMigration Load (1.2ms) SELECT "schema_migrations".* FROM "schema_migrations"
As a note, I quit mac terminal while running heroku run rake db:reset and maybe there is some internal error...
Try to the following, edit your Gemfile like below
gem 'pg', '~> 0.20.0'
Or
gem 'pg', '~> 0.11'
Then bundle install and try, it's working on my hand.
Note: the tilde sign before the >, that's not a dash
Once you make this update in your group production of your Gemfile, ensure you run bundle install --without production (to update Gemfile.lock file), do a git add/commit cycle, then re-deploy to Heroku.
Hope it helps
Migrations are not supposed to create data. They define tables, indexes, constraints, etc.
You should use db:seed, after migrating, to create data (besides adding pg version as mentioned on other answer.)
I am trying to move my development environment from my local machine to vagrant. I setup vagrant Ubuntu 14.04 amd64 box. I installed RVM, ruby, mysql, and many other requirements for rails development environment.
Finally i cd into rails root directory (which is shared with Windows 7 host) and run "bundle install", i get the error:
..
Resolving dependencies.....
Installing rake 10.1.1
Errno::EPERM: Operation not permitted # rb_sysopen - /vagrant/bin /rake
An error occurred while installing rake (10.1.1), and Bundler cannot continue.
Make sure that `gem install rake -v '10.1.1'` succeeds before bundling.
..
I have rails 3.2.17, ruby 2.2.1 and bundler 1.9.1.
I tried many different things such as chown /vagrant, remount with 777 mount_options, bundle install --path .bundle and so on, but none of them works.
Help me!
By the way this is the result of "bundle install --verbose"
..
Resolving dependencies.....
Using rake 10.1.1
0: rake (10.1.1) from /vagrant/.bundle/ruby/2.2.0/specifications/rake-10.1.1.gemspec
Errno::EPERM: Operation not permitted # rb_sysopen - /vagrant/bin /rake
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:175:in `initialize'
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:175:in `open'
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:175:in `block in generate_bundler_executable_stubs'
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:166:in `each'
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:166:in `generate_bundler_executable_stubs'
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:117:in `install_gem_from_spec'
/home/vagrant/.rvm/gems/ruby-2.2.1#global/gems/bundler-1.9.1/lib/bundler/installer.rb:263:in `block in install_sequentially'
..
I have finally found the solution. I think this is a bug in bundler. Bundler set the "BUNDLE_BIN" variable to 'bin ' (note the extra space) which causes the ruby code "File.open(binstub_path .." to throw error because ruby can not open "/vagrant/bin /rake" (note the extra space).
After i edited the ".bundle/config" file and set BUNDLE_BIN to 'bin' (removed space), "bundle install" worked fine.
I'm following the Michael Hartl Ruby on Rails Tutorial & there is a part where he is he he instructs you to update your Gemfile to include:
group :production do
gem 'pg', '0.12.2'
end
And then enter the below commands in your terminal:
bundle update
bundle install --without production
When you run the bundle update command it throws back the below errors.
sample_app:$ bundle update
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Using rake (10.0.3)
Using i18n (0.6.4)
etc
[omitted lines for brevity]
etc
Using railties (3.2.12)
Using coffee-rails (3.2.2)
Installing diff-lcs (1.1.3)
Using jquery-rails (2.0.2)
Installing pg (0.12.2)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/ross/.rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
etc
[omitted lines for brevity]
etc
Gem files will remain installed in /home/ross/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.12.2 for inspection.
Results logged to /home/ross/.rvm/gems/ruby-1.9.3-p392/gems/pg-0.12.2/ext/gem_make.out
An error occurred while installing pg (0.12.2), and Bundler cannot
continue.
Make sure that `gem install pg -v '0.12.2'` succeeds before bundling.
sample_app:$
I was able to overcome this error easily be removing the 'pg', '0.12.2' gem from the Gemfile & replacing it after running the bundle update command. This seems to work fine as the 'pg', '0.12.2' gem is aslo omitted in the without production flag in the latter bundle install --without production.
The 'pg', '0.12.2' gem is only needed for deploying to heroku with the correct database & everything works fine even when I deployed it to heroku but I'm just wondering if this is an error in the Tutorial or am I missing something bigger here?
It's also annoying to have to remove this Gem everytime I run bundle update, is bundle update really that necessary?
Thanks in Advance
I'm following the same tutorial and I think it's redundant to run update without modifying existing dependency, but in this case it's even causing problems because update command has not --without argument.
I stumbled upon Rails 3 cheatsheet which mentions bundler workflow this way:
After adding or removing dependencies from Gemfile
$ bundle
Commit Gemfile and Gemfile.lock
After modifying existing dependency versions
$ bundle update
Commit Gemfile and Gemfile.lock
I read man pages for bundle update and tried RECOMMENDED WORKFLOW which consists of running bundle update after bundle install.
In my case (some output omitted):
$ bundle install --without production
Resolving dependencies...
Using rake (10.0.3)
...
Installing rspec-core (2.11.1)
Your bundle is complete!
Gems in the group production were not installed. <-- check
$ bundle update
Resolving dependencies...
Using rake (10.0.3)
...
Using uglifier (1.2.3)
Your bundle is updated!
Gems in the group production were not installed. <-- check
I tried it with new RVM gem set and everything was installed correctly.
After that Gemfile.lock contains pg (0.12.2) and deploying to Heroku works.
RECOMMENDED WORKFLOW
In general, when working with an application managed with bundler, you
should use the following workflow:
After you create your Gemfile for the first time, run
$ bundle install
Check the resulting Gemfile.lock into version control
$ git add Gemfile.lock
When checking out this repository on another development machine, run
$ bundle install
When checking out this repository on a deployment machine, run
$ bundle install --deployment
After changing the Gemfile to reflect a new or update dependency,
run
$ bundle install
Make sure to check the updated Gemfile.lock into version control
$ git add Gemfile.lock
If bundle install reports a conflict, manually update the specific
gems that you changed in the Gemfile
$ bundle update rails thin
If you want to update all the gems to the latest possible versions
that still match the gems listed in the Gemfile, run
$ bundle update
Installation of postgres fails with this error : "Can't find the 'libpq-fe.h header"
Looks like a lot of people faced this problem, good news is : stackoverflow has the answer ;)
Can't find the 'libpq-fe.h header when trying to install pg gem
(or at least it should help you to look in the right direction)
I'm using ctran/annotate_models to annotate my models and route files. I'm now getting an error:
$ annotate -r
$ROOT/usr/lib/ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/shared_helpers.rb:151:in `block in cripple_rubygems': can't find executable rake (Gem::Exception)
from $ROOT/usr/lib/ruby/gems/1.9.1/bin/rake:19:in `<main>'
Route file annotated.
...with the result that annotate adds the comment block to config/routes.db, but the comment is empty. The message suggests that annotate can't find rake, but rake is certainly there:
$ which rake
$ROOT/usr/bin/rake
and here's what rake says about the current configuration:
$ rake about
About your application's environment
Ruby version 1.9.2 (x86_64-darwin10.6.0)
RubyGems version 1.3.7
Rack version 1.2
Rails version 3.0.5
Active Record version 3.0.5
Action Pack version 3.0.5
Active Resource version 3.0.5
Action Mailer version 3.0.5
Active Support version 3.0.5
Application root .../myapp
Environment development
The only things that's slightly odd in my Gemfile is that I am specifying a previous version of rake:
# file: Gemfile
source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'rake', '0.8.7' # workaround "uninitialized constant Rake::DSL" bug
...
gem 'annotate', '2.4.0'
Any ideas of what's wrong?
Try using bundle exec rake instead.
I created a new engine with Rails 3.1.rc1
➜ (ruby-1.9.2-p180#rails3-pre) rails git:(master) be bin/rails plugin new ../first_engine --mountable
rails g scaffold project title:string
Scaffold is generated and now when I run
bundle exec rake db:migrate
I get the following error:
rake aborted!
Don't know how to build task 'app:db:migrate'
Tasks: TOP => db:migrate
Before rc1, it was working. But what happened now? I couldn't figure it out!
Here is the gist with all the steps and backtraces https://gist.github.com/990641
Can anyone put me the right direction?
In you Gemfile or RVM Global Gemset file. Change rake to include the version. e.g.
gem 'rake', '0.8.7'
Just using rake will not work until Rails comes out with a fix. Let us know how you get on. All the best.