title: Rails Engines with problems in Foreign keys
body: <p>I'm developing a rails engine and this is my <code>gem.gemspec</code></p>
  
  <hr>
  
  <pre><code>s.required_ruby_version = '&gt;= 2.0.0'
  
  s.add_dependency 'rails', '&gt;= 4.2.0'
  s.add_dependency 'enumerate_it'
  s.add_dependency 'slim-rails'
  s.add_dependency 'bootstrap-sass'
  s.add_dependency 'jquery-rails'
  
  s.add_development_dependency 'rdoc'
  s.add_development_dependency 'tomdoc'
  s.add_development_dependency 'sqlite3'
  s.add_development_dependency 'rspec-rails'
  s.add_development_dependency 'timecop'
  s.add_development_dependency 'shoulda-matchers'
  s.add_development_dependency 'factory_girl_rails'
  s.add_development_dependency 'database_cleaner'
  s.add_development_dependency 'awesome_print'
  s.add_development_dependency 'guard'
  s.add_development_dependency 'guard-rspec'
  s.add_development_dependency 'guard-migrate'
  s.add_development_dependency 'guard-livereload'
  s.add_development_dependency 'thor'
  s.add_development_dependency 'simplecov'
  s.add_development_dependency 'codeclimate-test-reporter'
  </code></pre>
  
  <p>This is my migration file, that will be copy to my rails app, when I run the install command:</p>
  
  <pre><code>class CreateMpaStorySchema &lt; ActiveRecord::Migration
    def change
      create_table :mpa_story_archetypes do |t|
        t.string :name
        t.string :api_name
        t.string :api_key
        t.text :description
        t.integer :kind, index: true
        t.integer :tier, index: true
        t.integer :execution, index: true
        t.integer :interaction, index: true
        t.string :klass
        t.integer :expected_runtime
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_adjacency_matrices do |t|
        t.references :archetype, index: true, foreign_key: true
        t.integer :kind, index: true
        t.integer :predecessor_id, index: true
        t.integer :successor_id, index: true
        t.integer :branch, default: 0
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_instances do |t|
        t.integer :status, index: true
        t.text :artifacts
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_instance_steps do |t|
        t.references :archetype, index: true, foreign_key: true
        t.references :instance, index: true, foreign_key: true
        t.integer :kind, index: true
        t.integer :elapsed_time
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_instance_artifacts do |t|
        t.references :instance, index: true, foreign_key: true
        t.string :klass, index: true, foreign_key: true
        t.text :value
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_protocol_parameters do |t|
        t.references :archetype, index: true, foreign_key: true
        t.integer :interaction, index: true
        t.string :klass
        t.integer :kind, index: true
        t.string :parameter
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_archetypes_instances, id: false do |t|
        t.references :archetype, index: true, foreign_key: true
        t.references :instance, index: true, foreign_key: true
      end
  
      create_table :mpa_story_dynamic_routes do |t|
        t.references :archetype, index: true, foreign_key: true
        t.string :name
        t.text :actions
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_dynamic_actions do |t|
        t.references :dynamic_route, index: true, foreign_key: true
        t.integer :kind, index: true
        t.string :name
        t.string :http_method
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_business_rules do |t|
        t.references :archetype, index: true, foreign_key: true
        t.string :api_key, index: true
  
        t.timestamps null: false
      end
  
      create_table :mpa_story_notifications do |t|
        t.references :archetype, index: true, foreign_key: true
        t.string :api_key, index: true
  
        t.timestamps null: false
      end
  
      add_index :mpa_story_archetypes, :api_name, unique: true
      add_index :mpa_story_archetypes, :api_key, unique: true
  
      create_table :mpa_story_comments do |t|
        t.references :archetype, index: true, foreign_key: true
        t.string :name
        t.text :comment
        t.integer :parent_id, index: true
        t.integer :lft, index: true
        t.integer :rgt, index: true
        t.integer :depth
  
        t.timestamps null: false
      end
    end
  end
  </code></pre>
  
  <p>In my rails app this is my <code>Gemfile</code></p>
  
  <pre><code>source 'https://rubygems.org'
  # not used yet! source 'https://rails-assets.org'
  
  ruby '2.2.1'
  
  gem 'rails', '4.2.0'
  
  # Front-end
  gem 'sass-rails', '~&gt; 5.0'
  gem 'coffee-rails'
  gem 'uglifier', '&gt;= 1.3.0'
  gem 'therubyracer', platforms: :ruby
  gem 'jquery-rails'
  gem 'turbolinks'
  gem 'jbuilder', '~&gt; 2.0'
  gem 'bootstrap-sass', '~&gt; 3.3.1.0'
  gem 'autoprefixer-rails', '~&gt; 4.0.2.2'
  
  # View
  gem 'simple_form', '~&gt; 3.1.0'
  gem 'responders', '~&gt; 2.0.2'
  gem 'slim-rails', '~&gt; 3.0.1'
  gem 'enumerate_it', '~&gt; 1.2.3'
  
  # Infra
  gem 'pg', '~&gt; 0.18.1'
  
  # Auth
  gem 'devise', '~&gt; 3.4.1'
  gem 'devise-i18n-views', '~&gt; 0.3.3'
  
  gem 'mini_magick'
  gem 'refile', require: ['refile/rails', 'refile/image_processing']
  gem 'aws-sdk', '&lt; 2.0'
  gem 'dotenv-rails'
  
  # Association and form helpers
  gem 'cocoon', '&gt;= 1.2.6'
  gem 'awesome_nested_set'
  
  group :doc do
    gem 'sdoc', require: false
  end
  
  group :development, :test do
  
    # Tests
    gem 'parallel_tests'
    gem 'byebug'
    gem 'spring'
    gem 'better_errors'
    gem 'binding_of_caller'
    gem 'meta_request'
    gem 'quiet_assets'
    gem 'web-console', '~&gt; 2.0'
  
    gem 'guard'
    gem 'guard-rspec'
    gem 'guard-bundler'
    gem 'guard-livereload'
    gem 'guard-migrate'
  
    gem 'foreman'
  
    gem 'rspec-rails', '~&gt; 3.1.0'
    gem 'teaspoon', '~&gt; 0.8.0'
    gem 'shoulda-matchers', '~&gt; 2.7.0'
    gem 'fuubar', '~&gt; 2.0.0'
  
    gem 'awesome_print'
    gem 'pry-rails'
  end
  
  group :test do
    gem 'capybara', '~&gt; 2.4.4'
    gem 'capybara-screenshot', '~&gt; 1.0.4'
    gem 'poltergeist', '~&gt; 1.5.1'
  
    gem 'launchy', '~&gt; 2.4.3'
    gem 'database_cleaner', '~&gt; 1.4.0'
    gem 'factory_girl_rails', '~&gt; 4.5.0'
    gem 'forgery', '~&gt; 0.6.0'
    gem 'brazilian_forgery', git: 'https://github.com/internetsistemas/brazilian_forgery.git'
  
    gem 'simplecov', require: false
    gem 'codeclimate-test-reporter', require: false
  end
  
  group :production do
    gem 'rails_12factor'
  end
  </code></pre>
  
  <p>I omitted the paths for my engine, because it's private.</p>
  
  <p>Well, here is my problem, with this configs, when I run my migrations <code>RAILS_ENV=test rake db:drop db:create db:migrate</code> and then run my specs <code>rspec</code> everything works well.</p>
  
  <p>BUT when I try to update my engine for rails <code>4.2.1</code> in my <code>gem.gemspec</code> and <code>Gemfile</code> like this:</p>
  
  <p><code>gem.gemspec</code></p>
  
  <pre><code>s.required_ruby_version = '~&gt; 2.2'
  
  s.add_dependency 'rails', '&gt;= 4.2.1'
  s.add_dependency 'enumerate_it'
  s.add_dependency 'slim-rails'
  s.add_dependency 'bootstrap-sass'
  s.add_dependency 'jquery-rails'
  
  s.add_development_dependency 'rdoc'
  s.add_development_dependency 'tomdoc'
  s.add_development_dependency 'sqlite3'
  s.add_development_dependency 'rspec-rails'
  s.add_development_dependency 'timecop'
  s.add_development_dependency 'shoulda-matchers'
  s.add_development_dependency 'factory_girl_rails'
  s.add_development_dependency 'database_cleaner'
  s.add_development_dependency 'awesome_print'
  s.add_development_dependency 'guard'
  s.add_development_dependency 'guard-rspec'
  s.add_development_dependency 'guard-migrate'
  s.add_development_dependency 'guard-livereload'
  s.add_development_dependency 'thor'
  s.add_development_dependency 'simplecov'
  s.add_development_dependency 'codeclimate-test-reporter'
  </code></pre>
  
  <p><code>Gemfile</code> of my rails app that use my Engine</p>
  
  <p><code>gem 'rails', '4.2.1'</code></p>
  
  <p>And then I run <code>bundle update</code> for both, my engine and my rails app.</p>
  
  <p>When I run <code>RAILS_ENV=test rake db:drop db:create db:migrate</code> the migrations works well, but when I try to run <code>rspec</code> I got errors related with Foreign Keys, like this:</p>
  
  <p>== 20150416144229 CreateMpaStorySchema: migrating =============================
  -- create_table(:mpa_story_archetypes)
     -> 0.2872s
  -- create_table(:mpa_story_adjacency_matrices)
  rake aborted!
  StandardError: An error has occurred, this and all later migrations canceled:</p>
  
  <pre><code>PG::UndefinedTable: ERRO:  relação "archetypes" não existe : 
  ALTER TABLE    "mpa_story_adjacency_matrices" ADD CONSTRAINT     "fk_rails_2b6894b4f9"
  FOREIGN KEY ("archetype_id")
  REFERENCES "archetypes" ("id")
  </code></pre>
  
  <p>Anyone knows if there are some bugs related with rails 4.2.1 and engines ? </p>