我正在使用Docker镜像和一些指定的环境变量,例如GEM_HOME
和BUNDLE_PATH
.
RubyMine连接到远程Docker SDK就好了,但我看不到添加的宝石bundler
,即使它bundler
本身就存在.我的探查器无法配置项目因此,所以我被迫从中启动所有任务和服务器Terminal
.
如何让我的bundle
宝石可见?
它实际上与自定义bundle
宝石路径有关.改变后,宝石消失了gem list
.RubyMine从那里获取宝石,因此无法找到那些宝石.
有人知道如何gem list
使用bundler
自定义宝石路径吗?
即使添加bundle
宝石后gem list
我也有同样的问题:(
我需要将生成的文件下载作为Django REST Framework响应返回.我尝试了以下方法:
def retrieve(self, request, *args, **kwargs):
template = webodt.ODFTemplate('test.odt')
queryset = Pupils.objects.get(id=kwargs['pk'])
serializer = StudentSerializer(queryset)
context = dict(serializer.data)
document = template.render(Context(context))
doc = converter().convert(document, format='doc')
res = HttpResponse(
FileWrapper(doc),
content_type='application/msword'
)
res['Content-Disposition'] = u'attachment; filename="%s_%s.zip"' % (context[u'surname'], context[u'name'])
return res
Run Code Online (Sandbox Code Playgroud)
但它返回一个msword文档json
.
如何让它开始下载为文件?
我不是为什么,但以下代码停止工作(我甚至没有注意到它是如何发生的)
的routes.rb
devise_for :users, components: {registrations: 'registrations', sessions: 'sessions'}
Run Code Online (Sandbox Code Playgroud)
registations_controller.rb
class RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up).push(:name, :surname, :username, :email, :avatar)
devise_parameter_sanitizer.for(:account_update).push(:name, :surname, :email, :avatar)
end
end
Run Code Online (Sandbox Code Playgroud)
正如我所说的,之前每个人都工作得很好,但现在我得到了:
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"lvuPOmTRqv6XUQ/O1g4Q9VNvzD7DgGCHocY/OlAvKHEIvWAHvlS982hxSZZzzAESCpmL5QTUcTLw/c9ME/sUFQ==", "user"=>{"name"=>"John", "surname"=>"Doe", "username"=>"foobar", "email"=>"foobar@example.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"}
Unpermitted parameters: name, surname, email
Run Code Online (Sandbox Code Playgroud)
Cofiguration:
PS:现在我终于理解为什么我应该用单元测试覆盖我的代码并使用Travis CI
在我的服务中,我想描述在未经授权的情况下重定向用户时的行为.
export class MessagesService {
constructor (private http: Http) {}
private _usersUrl = '/users.json'; // URL to web api
getUsers() {
return this.http.get(this._usersUrl)
.map(res => <User[]> res.json().data)
.catch(this.handleError);
}
private handleError (error: Response) {
if (error.status == 401) {
// How do I tell Angular to navigate LoginComponent from here?
} else {
return Observable.throw(error.json().error || 'Server error');
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
由于发生错误,我无法运行Rails项目 mysql2
这篇帖子对我没有帮助:耙子流产了!未初始化的常量Mysql2
它也适用于我的同事计算机,因此排除了项目本身的问题.
这是控制台输出:
$ rails s
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'mysql2'. (Bundler::GemRequireError)
Gem Load Error is: uninitialized constant Mysql2::Client::SECURE_CONNECTION
Backtrace for gem load error is:
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/mysql2-0.3.14/lib/mysql2/client.rb:12:in `<class:Client>'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/mysql2-0.3.14/lib/mysql2/client.rb:2:in `<module:Mysql2>'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/mysql2-0.3.14/lib/mysql2/client.rb:1:in `<top (required)>'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/mysql2-0.3.14/lib/mysql2.rb:10:in `require'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/mysql2-0.3.14/lib/mysql2.rb:10:in `<top (required)>'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:91:in `require'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:91:in `block (2 levels) in require'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:86:in `each'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:86:in `block in require'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:75:in `each'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler/runtime.rb:75:in `require'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/bundler-1.13.6/lib/bundler.rb:106:in `require'
/home/duke/RubymineProjects/*******/*******/config/application.rb:7:in `<top (required)>'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/railties-3.2.15/lib/rails/commands.rb:53:in `require'
/home/duke/.rvm/gems/ruby-2.0.0-p648/gems/railties-3.2.15/lib/rails/commands.rb:53:in …
Run Code Online (Sandbox Code Playgroud) 此解决方案不适用于我:
在RubyMine中运行规范会导致"无法加载此类文件 - teamcity/spec/runner/formatter/teamcity/formatter(LoadError)"
以及这篇文章:
https://www.jetbrains.com/ruby/help/using-rspec-in-rails-applications.html
我使用的是Ubuntu 15.10,RubyMine 7.1,Ruby 2.2.3,Rails 4.2.5
当我试图启动RSpec时,Run 'spec:project
它返回一个错误:
/home/duke/.rvm/rubies/ruby-2.2.3/bin/ruby -I/home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib:/home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-support-3.4.1/lib /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
/home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `require': cannot load such file -- teamcity/spec/runner/formatter/teamcity/formatter (LoadError)
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `block in requires='
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `each'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `requires='
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:109:in `block in process_options_into'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:108:in `each'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:108:in `process_options_into'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:21:in `configure'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:101:in `setup'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:88:in `run'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:73:in `run'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:41:in `invoke'
from /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/exe/rspec:4:in `<main>'
/home/duke/.rvm/rubies/ruby-2.2.3/bin/ruby -I/home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/lib:/home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-support-3.4.1/lib /home/duke/.rvm/gems/ruby-2.2.3/gems/rspec-core-3.4.1/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb failed
Process finished with exit code …
Run Code Online (Sandbox Code Playgroud) 在我的ProductList
课堂上,当我尝试get_context_data
用另一种方法调用时,我收到一个错误'ProductList' object has no attribute 'object_list'
def get_context_data(self, **kwargs):
c = super(ProductList, self).get_context_data(**kwargs)
c['category'] = self.category
c['category_menu'] = self.get_category_menu()
c['filters'] = self.filters
c['expanded_filters'] = self.get_expanded_filters()
c['active_filters'] = self.get_active_filters()
c['category_list'] = self.category.get_children().filter(in_lists=True)
c['colors_list'] = self.get_colors_list(c['object_list'])
return c
def get_queryset(self):
data = self.get_context_data()
Run Code Online (Sandbox Code Playgroud)
是什么导致了这个错误?
我怎样才能进入object_list
第二种方法?
我的Rails应用程序中的模型很少,它们是:
我需要评论belog要么到Photo
或Album
,显然永远属于User
.我将使用多态关联.
# models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :user
belongs_to :commentable, :polymorphic => true
end
Run Code Online (Sandbox Code Playgroud)
问题是,Rails描述#create
新评论行动的方式是什么.我看到两个选项.
1.描述每个控制器中的注释创建
但这不是一个干燥的解决方案.我可以为显示和创建注释创建一个常见的局部视图,但我将不得不重复自己为每个控制器编写注释逻辑.所以它不起作用
2.创建新的CommentsController
这是我猜的正确方法,但我知道:
要使其工作,您需要声明模型中的外键列和类型列,以声明多态接口
像这样:
# schema.rb
create_table "comments", force: :cascade do |t|
t.text "body"
t.integer "user_id"
t.integer "commentable_id"
t.string "commentable_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
Run Code Online (Sandbox Code Playgroud)
所以,当我编写非常简单的控制器时,它将接受来自远程表单的请求:
# controllers/comments_controller.rb
class CommentsController < ApplicationController
def new
@comment = Comment.new
end
def create
@commentable = ??? …
Run Code Online (Sandbox Code Playgroud) ruby activerecord ruby-on-rails polymorphic-associations ruby-on-rails-4
有没有办法扩展MDL微调器?我试图改变它widht
和height
属性,但它变得thiner.看一看:
CSS
width: 150px;
height: 150px
Run Code Online (Sandbox Code Playgroud)
结果
我不能手动关闭我的套接字.它仅在我关闭浏览器中的选项卡时退出.
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2016-10-29 16:55:49 +0200
Run Code Online (Sandbox Code Playgroud)
但是当我打电话的时候
App.cable.subscriptions.remove(App.subscription)
Run Code Online (Sandbox Code Playgroud)
要么
App.subscription.unsubscribe()
Run Code Online (Sandbox Code Playgroud)
CommunityChannel
正在调用方法"unsubscribed" ,但电缆仍然存在,我仍然可以在我的函数"print_socket"中打印它
如何手动关闭连接?
module ApplicationCable
class Connection < ActionCable::Connection::Base
identified_by :current_user
def connect
self.current_user = find_verified_user
end
protected
def find_verified_user
if current_user = User.find_by(id: cookies.signed[:user_id])
current_user
else
reject_unauthorized_connection
end
end
end
end
Run Code Online (Sandbox Code Playgroud) ruby ×5
django ×2
actioncable ×1
activerecord ×1
angular ×1
bundler ×1
css ×1
devise ×1
docker ×1
download ×1
ms-word ×1
mysql ×1
python ×1
python-2.7 ×1
rspec ×1
rubymine ×1
typescript ×1