In my Rails application (Rails 4.2.4) I'm using mongoid 5.
When running in production, mongoid logs are not going to production.log. It's going to my thin logs instead.
I didn't have this issue with mongoid 3. Any thoughts on how could I keep all mongoid logs on production.log file?
Thanks
Do you use heroku? It is that the case, you need to add the rails_12factor gem as is explained here: https://devcenter.heroku.com/articles/getting-started-with-rails4#heroku-gems
At the end of Gemfile add:
gem 'rails_12factor', group: :production
Then run:
$ bundle install
Related
I am newbie with Heroku and trying to upload a static website to Heroku. Here is what I did with this one.
First, I made a static website named Y , and when I ran localhost:3000, it ran very ok.
Then I followed suggestions from internet, I changed my gemfile
gem 'sqlite3'
to
group :development do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
and, change my routes.rb file like this
Rails.application.routes.draw do
get 'home/index'
root 'home#index'
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
end
But when I tried to run heroku open , it still give me this error
Sorry for my newbie's question, but I am stucking with this one and very confusing. Could you please give me some ideas? Thank you very much.
Check your config/database.yml
You are using pg gem in production but your database.yml file is configured for sqlite3.
It's better to configure your app to use pg on both production and development as well.
You should change your gem file to use gem pg in development
Run bundle install
And then reconfigure your database.yml to use the pg database.
Then run
Rails db:create
Rails db:migrate
And dont forget to add our enviroment variables to heroku so that it can use the database.
I've got an API mode Rails 5 app that won't let me run rake routes or rails s. The error I get is:
$ rake routes
rake aborted!
LoadError: Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile
.../config/environment.rb:5:in `<top (required)>'
LoadError: cannot load such file -- listen
.../config/environment.rb:5:in `<top (required)>'
Tasks: TOP => routes => environment
(See full trace by running task with --trace)
I've verified that listen is in the development group in my Gemfile:
group :development do
gem 'listen', '~> 3.1.5'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
And that it's in my Gemfile.lock:
$ cat Gemfile.lock | grep 'listen'
listen (3.1.5)
spring-watcher-listen (2.0.0)
listen (>= 2.7, < 4.0)
listen (~> 3.1.5)
spring-watcher-listen (~> 2.0.0)
I've bundle updated, and bundle installed, and verified that gem install listen works. This was working earlier this week, but I'm not having luck going back through my commits.
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
I don't see it in vendor/cache but I'm not sure what to make of that...
$ bundle package | grep 'listen'
Appreciate the help!
Update:
I can "fix" the problem by putting gem 'listen', '~> 3.1.5' in the global Gemfile (and removing it from :development). Then all the errors go away and everything works, but that seems wrong.
If you are on rails 5 and you are using the default config/environments/development.rb file it will have this line of code in there.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
This requires the gem listen. This threw me for a bit as I was doing a rails 4 upgrades to a rails 5
edit:
Forgot to mention that if you comment that line of code out it will not need the listen gem anymore.
You might by mistake have set bundle install --without at some point, I sure did anyways.
To revert this run:
bundle config --delete without
I also ran bundle config --delete with as I manually set with option as well by mistake. Running both should get you back to default behaviour.
After having deleted the without config I could successfully run a bundle install again and afterwards my rails s, rails db:migrate etc. worked.
You can confirm if this is your issue by running bundle install and look at the second last line in the output. If it states:
Gems in the groups development and test were not installed.
It's for sure above solution should work for you.
I used this: bundle install --without development
Error:
Could not load the 'listen' gem. Add gem 'listen' to the development group of your Gemfile (LoadError)
After this, use that code:
bundle config --delete without
bundle config --delete with
Finally
bundle install
I'm posting this as an answer, but I don't like it.
I can "fix" the problem by putting gem 'listen', '~> 3.1.5' in the global Gemfile (and removing it from :development). Then all the errors go away and everything works, but that seems wrong.
I found an easy fix after a lot of trials of rebuild's
bundle config --delete without
bundle config --delete with
bundle install
If you accidentally built the gemset prior to seting your envirnoment correctly, then this may help clear out the problems.
I'm having the same problem by running rails c.
By reading this other Stack Overflow post I did realize that it is normal that both bundle exec rake command or rails console are running in a default production environment.
I figured I will solve the issue either by:
adding export RAILS_ENV=production in ~/.bash_profile
explicitly writing the environment in which I want the command to execute like bundle exec rake a_rake:task RAILS_ENV=production rails console --env=production etc...
I had similar problem today after upgrade from Rails 5.1.5 to 5.2.0. First time running the server there was the following 'missing assets' problem:
ActionView::Template::Error (The asset "asterisk_orange.png" is not present in the asset pipeline.)
Trying to precompile the assets shows the 'gem listen error':
$ bundle exec rake assets:precompile
rake aborted!
LoadError: Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile
My solution was to explicit set production environment:
$ RAILS_ENV=production bundle exec rake assets:precompile
This precompiles the assets w/o problems and the 'missing assets' problem was fixed.
I had the same issue. Thanks to #newdark answer I figured out the correct solution. Basically I wanted to deploy rails in production mode. But obviously forgot to set environment variable RAILS_ENV=production before running server.
So to recap, dependencies for production mode were installed while rails tried to start in development mode due to forgetting to set RAILS_ENV=production. If I went on to add gem listen to the production dependencies, I'd be running in development mode without being able to notice.
For me the solution was to do export RAILS_ENV=production before executing any rails commands and keep dependencies intact. Hope I managed to explain.
I had the same problem, i fix it by running
rails c -e production
I had same error when trying to generate mongoid database file.
but I created rails new project on ruby 2.5.1. Your ruby is 2.2. so the causality could be different in my situtation.
when I used rails new project, it was created in version 5.2, then I changed gem to 5.1.2 and problem arises. When I created with rails _5.1.6_ new in Gemfile there is generated additional pack for development.
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
this way 'listen' showed me in gemfile automaticaly
I was working with Docker and encountered this error when executing
rails webpacker:install
It was happening because this line was being executed before
ENV RAILS_ENV production
RUN chmod +x bin/rails
ENTRYPOINT ["bin/rails"]
Fixed it by simply placing all rails commands after this
I am using the following gems in my project
gem 'sunspot_rails'
group :development do
gem 'sunspot_solr'
end
I am trying to figure out why we shouldn't use sunspot gem by itself in production environment?
Most people recommend setting up a standalone solr service such as jetty+solr or tomcat+solr
There are several links that explain solr in production:
Setup sunspot solr with rails in production environment
http://outoftime.github.io/pivotal-sunspot-presentation.html
http://wiki.apache.org/solr/EmbeddedSolr
But they dont say why?
I tried putting all production data and creating indexes as i would need in production and faced no problem.
Is there anyone who has used the sunspot_solr in production and faced problems?
I'm new to rails and working through Hartl's tutorial. Everything was fine until I tried to do the tutorial a second time and created another project trying to use the latest version of rails. When I try to load the rails server from the app folder I get the following error.
$ rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
Exiting
/Users/sierra/Desktop/sample_app_2/config/environments/development.rb:1:in
`<top (required)>': undefined method `configure' for
#<SampleApp2::Application:0x00000101a74610> (NoMethodError)
My Gemfile is directly from the Hartl tutorial:
source 'https://rubygems.org'
ruby '2.1.0'
#ruby-gemset=railstutorial_rails_4_0
gem 'rails', '4.0.4'
group :development, :test do
gem 'sqlite3', '1.3.8'
gem 'rspec-rails', '2.13.1'
end
group :test do
gem 'selenium-webdriver', '2.35.1'
gem 'capybara', '2.1.0'
end
gem 'sass-rails', '4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'
group :doc do
gem 'sdoc', '0.3.20', require: false
end
group :production do
gem 'rails_12factor', '0.0.2'
end
I resolved it by doing following step.
Step 1: go to Project_Root_Directory/config/environment/development.rb
Change this line
Rails.application.configure do
To
Your_Rails_Application_Folder_name::Application.configure do
For example my rails project folder name is 'Spree_demo' so Your_Rails_Application_Folder_name in the following line:
Your_Rails_Application_Folder_name::Application.configure do
will be replaced as
SpreeDemo::Application.configure do
Note: See underscore in your application folder name it gets removed.
Hope it works for you guys.
First set Ruby version before Rails new
I had the same problem and I tried the answer given and it had no impact.
I even tried changing the name to get rid of the underscore, and it had no impact.
The problem is that you did this:
$ rails new app_name
But your ruby version was probably 2.1.1 or something else. You want to do:
$ rvm 2.0.0
BEFORE you run the new app, and then when you set 2.0.0 in your Gemfile (as Hartl recommends) it falls into place.
I don't know WHY this works, and I hope someone will shed light on it, but I can tell you that this worked better than the answer that is currently in the lead.
That happened to me too. The problem was that I used one version of Rails to create the project. Then I changed the Gemfile to use another version of Rails and the system was using it to scaffold or run the server. Newbie problem!
Using the same version consistently should solve the problem. :-)
I posted a (probably way too long) answer in a similar question: rails - NoMethodError: undefined method `configure' for FirstApp. This thread actually started me on the way to my eventual solution, so I thought I'd post here as well just in case it's helpful to anyone else.
From what I can tell, the problem occurs when the app/config/initializers/development.rb (and production.rb) files are generated for a new project using some newer versions of Rails (I'm not sure in which version it started, I only tested Rails 4.1.4). Mr. Hartl uses Rails 4.0.8 for his tutorial, and that's the highest version I tested in which the new syntax doesn't occur.
In Rails 4.1.4, and maybe some other versions after 4.0.8, the first line in those files is generated as Rails.application.configure.do rather than, using a project called sample_app as an example, SampleApp::Application.configure.do as in 4.0.8.
I'm new to Rails so I don't know why this syntax changed in newer versions. I'm assuming it's intentional and somehow better than the old way. Most likely, Mr. Hartl will take it in to account in future editions of his tutorial that are updated for versions of Rails which include this change.
Until then, see my other answer in the question I mentioned above for a more thorough explanation of how I got around it on Windows 7, but the tl;dr of it is:
Make sure you're using the version of Rails specified for the tutorial (4.0.8) in your local repository/root development directory before you create your new project. Updating your Gemfile after creating the project is still important, but it won't solve this problem if the files themselves were generated with a newer version of Rails. You'll have to go in and edit that line manually in that case, as other users have suggested.
I had this issue when I messed around with my Gemfile. For example I have created the app using rails 4.0.2 or something like that then due to some errors I changed it to 4.1.1 that change cause this exact same problem in both development and production
I just installed Rails3 Bootstrap Device Cancan in my local machine and ran rake spec but I'm getting all test failures with below error in common:
undefined local variable or method 'postgresql_version' for #<ActiveRecord::ConnectionAdaptors::SQLite3Adaptor:0x489dff8>
I'm not sure why I'm getting this since I followed the instructions on https://github.com/RailsApps/rails3-bootstrap-devise-cancan carefully.
I'm currently running this on Windows 8 and used Bitnami RubyStack to run CMD
I ran into the same problem and this is how I resolved it.
It looks like there is a problem with version 1.1.0 of database_cleaner. See "database_cleaner >= 1.1.0 is broken for SQLite" (https://github.com/gregbell/active_admin/issues/2388). I updated my Gemfile to set
gem 'database_cleaner', '< 1.1.0'
then ran "bundle install" and after it completed, "rake spec" ran cleanly.
Double-check your database.yml. Refer to Configuring Rails Applications, Section 3.12, Configuring a Database.
Did you intend to use sqlite3? Is sqlite3 in your Gemfile? Naturally, SQLite3Adaptor will not respond to postgresql_version! Can you include a few more lines of the stack trace?
I doubt this has anything to do with devise or cancan.