小编And*_*tad的帖子

升级到设计3.1 =>获取重置密码令牌无效

感谢史蒂文哈曼的这个要点,我得到了它的工作.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)

ruby-on-rails devise rspec2 ruby-on-rails-4 factory-bot

40
推荐指数
4
解决办法
2万
查看次数

rails 3.1在heroku .css上的部署不是预编译错误

更新

我收到此错误是因为我有一个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)

ruby-on-rails heroku

33
推荐指数
2
解决办法
1万
查看次数

Jquery正在将prevObject:添加到数组中

我想将数组中的所有浮点数相加

当我在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?我怎么能重构摆脱它呢?

javascript arrays jquery

14
推荐指数
2
解决办法
6449
查看次数

使用capybara,phantomjs和rails在子域上测试javascript

这很有效.主要的本质是我必须在登录表单中设置Capybara.server_portCapybara.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 = …

subdomain ruby-on-rails capybara phantomjs

10
推荐指数
1
解决办法
4027
查看次数

运行rails控制台时加载错误

我使用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)

ruby-on-rails

10
推荐指数
1
解决办法
5274
查看次数

rails 3.2子域和设计

我有一个应用程序,用户可以登录到他们的公司子域.

我用设计.此代码将用户从根域重定向到子域.

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)

subdomain internet-explorer ruby-on-rails devise

7
推荐指数
1
解决办法
1144
查看次数

Rails和Unicorn应该消耗多少内存?

我刚刚在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)

deployment ruby-on-rails unicorn ruby-on-rails-4

6
推荐指数
1
解决办法
1876
查看次数

PG :: DependentObjectsStillExist:使用rspec时出错

当我跑

$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)

但是怎么样?

ruby queue rspec ruby-on-rails rails-postgresql

6
推荐指数
1
解决办法
1717
查看次数

如何使用 Chart.js 在图条上方显示值标签

我正在使用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)

javascript jquery chart.js

5
推荐指数
1
解决办法
1万
查看次数

在heroku上的Rails 3.1运行rake db:migrate不会发生

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)

有任何想法吗?

ruby-on-rails heroku

4
推荐指数
1
解决办法
5219
查看次数