解
感谢史蒂文哈曼的这个要点,我得到了它的工作.devise_mail_helpers.rb
module Features
module MailHelpers
def last_email
ActionMailer::Base.deliveries[0]
end
# Can be used like:
# extract_token_from_email(:reset_password)
def extract_token_from_email(token_name)
mail_body = last_email.body.to_s
mail_body[/#{token_name.to_s}_token=([^"]+)/, 1]
end
end
end
Run Code Online (Sandbox Code Playgroud)
我将文件添加devise_mail_helpers.rb到功能规格所在的文件夹中并编写了此规范.
require 'devise_mail_helpers.rb'
include Features
include MailHelpers
describe "PasswordResets" do
it "emails user when requesting password reset" do
user = FactoryGirl.create(:user)
visit root_url
find("#login_link").click
click_link "Forgot your password?"
fill_in "Email", :with => user.email
click_button "Send instructions"
current_path.should eq('/users/sign_in')
page.should have_content("You will receive an email with instructions about how to …Run Code Online (Sandbox Code Playgroud) 更新
我收到此错误是因为我有一个public.css和public.js文件,该文件未使用其余的.css和.js文件进行编译.解决方案是将此行添加到production.rb文件中
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( public.js public.css )
Run Code Online (Sandbox Code Playgroud)
从评论中可以看出,所有文件名应用程序都已添加.所以,我只需添加那些没有被称为应用程序的那些.
希望它可以帮到某人!
原始问题
我有这个宝石文件
gem 'rails', '3.1.0'
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
gem "heroku"
gem 'thin'
gem 'sass-rails', " ~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'tabulous'
gem 'json'
gem "paperclip", "~> 2.4"
gem "devise"
gem "redcarpet"
group :assets do
gem 'uglifier'
end
gem 'jquery-rails'
gem "rspec-rails", :group => [:test, :development]
group …Run Code Online (Sandbox Code Playgroud) 我想将数组中的所有浮点数相加
当我在chrome控制台中执行此操作时
$("tr.project_hours").find("td.number").map(function(i,v)
{return parseFloat($(v).attr("data-time"))
})
Run Code Online (Sandbox Code Playgroud)
我明白了
[0, 0, 0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
这就是我要的
但是,在我的代码中,我有更多的$("tr.project_hours"),我想分别对它们求和.所以,我做到了
$("tr.project_hours").each(function(){
row = $(this).find('td.total')
row.html(sumInputsIn($(this).find("td.number").map(function(i,v){
return parseFloat($(v).attr("data-time"))})));
})
Run Code Online (Sandbox Code Playgroud)
('td.total')是应显示结果的列.问题是最后一个代码在控制台中返回
[0, 0, 0, 0, 0, 0, 0, prevObject: jQuery.fn.jQuery.init[7], context: <tr>]
Run Code Online (Sandbox Code Playgroud)
结果是臭名昭着的NaN.
为什么我在我的数组中获取prevObject?我怎么能重构摆脱它呢?
解
这很有效.主要的本质是我必须在登录表单中设置Capybara.server_port和Capybara.app_host手动登录.Capybara.app_host除非在变量中声明,否则无法使用动态子域进行设置.所有网址都必须硬编码.
require 'spec_helper'
feature 'customer' do
let(:user) {FactoryGirl.create(:user)}
let(:firm) {user.firm}
let(:customers) {"http://#{firm.subdomain}.lvh.me:31234/customers"}
let(:root_url) {"http://#{firm.subdomain}.lvh.me:31234/"}
before(:all) do
Capybara.server_port = 31234
sub = firm.subdomain
Capybara.app_host = root_url
end
def sign_in_on_js
visit root_url
fill_in "Email", :with => user.email
fill_in "Password", :with => "password"
click_button "Sign in"
page.should have_content("Signed in successfully.")
end
scenario "make new", js: true do
sign_in_on_js
visit customers
page.should have_content("Add new customer")
find("#dialog_customer").click
page.should have_content("Create new customer")
end
end
Run Code Online (Sandbox Code Playgroud)
原始问题 我在rails中制作多租户应用程序.会有很多javascript.但是,我无法让测试工作.
当没有运行时,:js = …
我使用rails 4.1和ruby 2.1.1
一切正常,但是当我运行rails console时,我得到了这个错误
> rails console
Loading development environment (Rails 4.1.0)
load error: /home/andreas/.rvm/rubies/ruby-2.1.1/.irbrc
NoMethodError: undefined method `split' for nil:NilClass
/home/andreas/.rvm/scripts/irbrc.rb:41:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)
错误后控制台打开并可以使用.
这是.irbrc文件中的第41行和周围环境.
39 # Calculate the ruby string.
40 rvm_ruby_string = ENV["rvm_ruby_string"] ||
41 (ENV['GEM_HOME'] && ENV['GEM_HOME'].split(/\//).last.split(/@/).first) ||
42 ("#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" rescue nil) ||
43 (RUBY_DESCRIPTION.split(" ")[1].sub('p', '-p') rescue nil ) ||
44 (`ruby -v` || '').split(" ")[1].sub('p', '-p')
Run Code Online (Sandbox Code Playgroud)
在控制台中测试时,我得到了这些结果
irb(main):008:0> ENV['GEM_HOME']
=> ""
irb(main):009:0> ENV['GEM_HOME'].split(/\//).last
=> nil
Run Code Online (Sandbox Code Playgroud)
如果我在rails应用程序之外运行irb,我会得到
2.1.1 :001 > ENV['GEM_HOME']
=> "/home/andreas/.rvm/gems/ruby-2.1.1"
2.1.1 …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,用户可以登录到他们的公司子域.
我用设计.此代码将用户从根域重定向到子域.
def after_sign_in_path_for(resource_or_scope)
scope = Devise::Mapping.find_scope!(resource_or_scope)
subdomain_name = current_user.firm.subdomain
if current_subdomain.nil?
# logout of root domain and login by token to subdomain
token = Devise.friendly_token
current_user.loginable_token = token
current_user.save
sign_out(current_user)
flash[:notice] = nil
home_path = valid_user_url(token, :subdomain => subdomain_name)
return home_path
else
if subdomain_name != current_subdomain.name
# user not part of current_subdomain
sign_out(current_user)
flash[:notice] = nil
flash[:alert] = "Sorry, invalid user or password for subdomain"
end
end
super
end
Run Code Online (Sandbox Code Playgroud)
它在chrome,firefox,opera和safari中运行得非常好,但它在IE9中不起作用.我没有收到任何错误消息.从日志中我看到用户获得了sigend,当用户被重定向到主页时,他/她是未经授权的.有没有人知道发生了什么?形成日志.
Processing by SessionsController#create as HTML
Parameters: {"utf8"=>"?",
"authenticity_token"=>"JaffZi9f+Uyovuya8wR2u7LjG9w/3wdUDqTqONt/kFM=",
"user"=>{"email …Run Code Online (Sandbox Code Playgroud) 我刚刚在Unicorn上部署了一个Rails 4应用程序.
它没有流量,在我看来,它正在吃大量的内存.
与2名独角兽工人闲置,使用253 MB的ram.这是预期的吗?
我使用一些可能是内存饥饿的宝石,gemfile
gem 'rack-ssl'
gem 'jquery-rails'
gem 'activeadmin'
gem 'american_date'
gem 'paperclip'
gem 'cancan'
gem 'pdfkit'
gem 'newrelic_rpm'
gem 'select2-rails'
gem 'whenever', :require => false
gem 'paymill'
gem 'pg'
gem 'queue_classic'
gem 'rails-observers'
gem 'actionpack-page_caching'
gem 'actionpack-action_caching'
gem 'sass-rails', :github => 'rails/sass-rails'
gem 'coffee-rails', :github => "rails/coffee-rails"
gem 'uglifier', '>= 1.3.0'
gem 'jquery-ui-rails'
gem 'foreman'
gem 'jquery-turbolinks'
gem 'turbolinks'
gem 'unicorn'
gem 'capistrano'
gem 'rvm-capistrano'
Run Code Online (Sandbox Code Playgroud)
对于htop
CPU[| 0.7%] Tasks: 38, 10 thr; 1 running
Mem[||||||||||||||||||||||||| 253/995MB] …Run Code Online (Sandbox Code Playgroud) 当我跑
$rspec "/any_file"
Run Code Online (Sandbox Code Playgroud)
rspec在schema.rb文件中加载以设置数据库.
我的理解是,当涉及到这条线
create_table "queue_classic_jobs", force: true do |t|; end
Run Code Online (Sandbox Code Playgroud)
Rspec运行一个
DROP TABLE "queue_classic_jobs"
Run Code Online (Sandbox Code Playgroud)
命令.
它拖出了这个错误
PG::DependentObjectsStillExist: ERROR: cannot drop table queue_classic_jobs because
other objects depend on it (ActiveRecord::StatementInvalid)
DETAIL: function lock_head(character varying) depends on type queue_classic_jobs
function lock_head(character varying,integer) depends on type queue_classic_jobs
HINT: Use DROP ... CASCADE to drop the dependent objects too.
: DROP TABLE "queue_classic_jobs"
Run Code Online (Sandbox Code Playgroud)
它看起来像我必须制作rspec
DROP TABLE "queue_classic_jobs" CASCADE
Run Code Online (Sandbox Code Playgroud)
但是怎么样?
我正在使用chart.js,我想在条形图上方显示标签值,那么该怎么做呢?
var barChartData = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [{
fillColor: "rgba(220,220,220,0.5)",
strokeColor: "rgba(220,220,220,1)",
data: [65, 59, 90, 81, 56, 55, 40],
}]
}
Run Code Online (Sandbox Code Playgroud) Rails 3.1
我有一个用以下命令制作的heroku应用程序
heroku create app_name --stack cedar
Run Code Online (Sandbox Code Playgroud)
我做到了
git add .
git commit -a -m "message"
git push heroku master
Run Code Online (Sandbox Code Playgroud)
我在我的gemfile中有这个
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
Run Code Online (Sandbox Code Playgroud)
我跑的时候
$ heroku run rake db:migrate
Running rake db:migrate attached to terminal... up, run.1
me@mine ~/projects/app_name
$
Run Code Online (Sandbox Code Playgroud)
我得到了运行线但没有任何事情发生.它只是回到$,等待一个新的命令.我没有收到任何错误消息.我的git仓库中有大约10个迁移文件.
有趣的是,它几天前就有效了.所以我认为heroku app可能有问题.我删除了它,制作了一个新的雪松堆并推动了回购.同样的事情发生了.
更新
这是我的.gitignore
.bundle
db/*.sqlite3
log/*.log
tmp/
.sass-cache/
Run Code Online (Sandbox Code Playgroud)
我试图从本地仓库中删除/db/schema.rb文件并提交并推送
我试过了
$ heroku pg:reset SHARED_DATABASE
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?