我无法弄清楚如何使用Sinatra记录消息.我不打算记录请求,而是在我的应用程序中的某些点上自定义消息.例如,在获取我想要记录的URL时"Fetching #{url}"
.
这是我想要的:
logger.info("Fetching #{url}")
)我猜这可以很容易地在做config.ru
,但我不是100%肯定,我想启用该设置,如果我必须手动创建一个Logger
对象本人(以及此外,该级Logger
使用方法:Logger
,Rack::Logger
,或Rack::CommonLogger
) .
(我知道在StackOverflow上有类似的问题,但似乎都没有直接回答我的问题.如果你能指出我现有的问题,我会把这个问题标记为副本).
我是一个有python单元测试的新手,尤其是coverage.py.覆盖报告是否包含实际测试文件的覆盖范围是否可取?
以下是我的HTML报告的屏幕截图作为示例.
您可以看到该报告包含tests/test_credit_card
.起初我试图tests/
从报告中省略目录,如下所示:
coverage html --omit=tests/ -d tests/coverage
Run Code Online (Sandbox Code Playgroud)
我尝试了该命令的几种变体,但我不能为我的生活得到测试/排除.在接受失败后,我开始怀疑是否应该将测试文件包含在报告中.
任何人都可以对此有所了解吗?
我的项目中有一个现有的ViewController + xib,现在我想添加一个带静态单元格的UITableView,如下所示:
但是当我将UITableView拖到我的屏幕上时,我没有在Attributes Inspector中有"Content> Static"菜单.
我已经尝试制作我的控制器子类UITableViewController,但这没有帮助 - 我仍然没有选择在Attributes Inspector中使用静态单元格.
我查看了StackOverflow,但没有找到这个问题的任何现有答案.所有现有问题都与Storyboard(我没有使用)有关,而不是xib文件.
我的猜测是,当你将一个UITableViewController添加到一个故事板时,Xcode会产生某种魔力,但是当你将现有的xib更改为从UITableViewController继承时,它不会.
有关如何将静态单元格的表格视图添加到现有xib的任何建议吗?
我一直在使用virtualenv + pip进行python开发.我不确定发生了什么,但每当我尝试运行命令行工具或导入库时,我都会收到以下错误消息:
Traceback (most recent call last):
File "/Users/kyle/.virtualenvs/fj/bin/pip", line 4, in <module>
import pkg_resources
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 698, in <module>
the platform/python version defined at initialization are added.
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 701, in Environment
search_path = sys.path
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 96, in get_supported_platform
'Environment', 'WorkingSet', 'ResourceManager',
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 221, in get_build_platform
if provDarwin:
File "/Users/kyle/.virtualenvs/fj/lib/python2.6/distutils/__init__.py", line 14, in <module>
exec open(os.path.join(distutils_path, '__init__.py')).read()
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/__init__.py'
Run Code Online (Sandbox Code Playgroud)
从我可以破译的内容来看,Python试图distutils_path
在Mac OSX系统版本中找到Python,而不是像我应该的那样的virtualenv版本. …
我有一个Sinatra应用程序,需要我在本地开发的另一个gem.我在配置Bundler以在开发过程中使用我的本地gem代码时遇到了麻烦,但我在生产中使用了我的宝石代码.
理想情况下我可以这样做,但Bundler不允许你指定两次相同的gem:
# Doesn't work:
group :development do
gem 'awesome', :path => "~/code/awesome"
end
group :production do
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
end
Run Code Online (Sandbox Code Playgroud)
与此同时,我每次部署时都会手动出售gem并更新Gemfile中的gem源,这非常麻烦.我的工作流程如下:
gem 'awesome', :path => "~/code/awesome"
)vendor/gems
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
)bundle install
(更新Gemfile.lock)太麻烦了!我想做一些更简洁的事情,而不仅仅是编写Rake任务来自动化我当前的设置.
这种情况的最佳工作流程是什么?
我正在尝试使用Foreman(版本0.31.0)来管理我们的应用程序的进程,但我对nginx(nginx/1.0.10 + Phusion Passenger 3.0.11)没有太多运气.
这是我的Procfile中的相关行:
nginx: sudo /home/ubuntu/nginx/sbin/nginx
Run Code Online (Sandbox Code Playgroud)
当我启动应用程序时,Foreman报告nginx已启动,然后立即终止:
$ foreman start
21:18:28 nginx.1 | started with pid 27347
21:18:28 nginx.1 | process terminated
21:18:28 system | sending SIGTERM to all processes
Run Code Online (Sandbox Code Playgroud)
但是,即使Foreman另有报告,nginx实际上仍在运行.
同样,如果我导出到Upstart:
rvmsudo foreman export upstart /etc/init -a my_app -u ubuntu
Run Code Online (Sandbox Code Playgroud)
并运行sudo start my_app
,nginx正常启动.但sudo stop my_app
不会阻止nginx.它继续运行.
让nginx与Foreman合作是否有诀窍?
注意:我发现Foreman的这个问题,我想知道它是否相关.
我正在寻找一种方法来加速我的Shoulda + FactoryGirl测试.
我试图测试的模型(StudentExam
)与其他模型有关联.在创建之前,这些关联对象必须存在StudentExam
.出于这个原因,它们是在中创建的setup
.
但是,我们的一个模型(School
)需要很长时间才能创建.因为setup
每一个之前被调用should
语句时,整个测试用例需要亿万年来执行-它创建了一个新的@school
,@student
,@topic
和@exam
每一个应声明执行.
我正在寻找一种只创建一次这些对象的方法.是否有类似startup
for before_all
方法的东西可以让我创建记录,这些记录会在测试用例的其余部分持续存在?
基本上我之前正在寻找与RSpec 之前完全相同的东西(:全部).我不关心依赖的问题,因为这些测试永远不会修改那些昂贵的对象.
这是一个示例测试用例.为长代码道歉(我也创造了一个要点):
# A StudentExam represents an Exam taken by a Student.
# It records the start/stop time, room number, etc.
class StudentExamTest < ActiveSupport::TestCase
should_belong_to :student
should_belong_to :exam
setup do
# These objects need to be created before we …
Run Code Online (Sandbox Code Playgroud) My Ionic应用程序使您可以从侧面菜单中选择一个项目,然后在主要内容区域中显示两个选项卡(任务,消息)。任务和消息选项卡是项目的嵌套状态。
在侧面菜单中更改项目时,TaskListCtrl
将执行两次。在项目之间进行切换时,请观看实时演示并观看控制台。我也有一个视频,详细显示了该问题。
如何停止TaskListCtrl
执行两次?有没有一种更好的方法可以构造这些嵌套状态?
完整代码在GitHub上»
这是我的$stateProvider
配置:
.state('project', {
url: "/projects/:projectID",
abstract: true,
cache: false,
controller: 'ProjectDetailCtrl',
templateUrl: "templates/project.tabs.html",
resolve: {
project: function($stateParams, Projects) {
return Projects.get($stateParams.projectID);
}
}
})
.state('project.tasks', {
url: '/tasks',
views: {
'tasks-tab': {
templateUrl: 'templates/task.list.html',
controller: 'TaskListCtrl'
}
}
})
Run Code Online (Sandbox Code Playgroud)
和相关的摘录来自controllers.js
:
.controller('ProjectDetailCtrl', function($scope, project) {
$scope.project = project;
console.log('=> ProjectDetailCtrl (' + $scope.project.name + ')')
})
.controller('TaskListCtrl', function($scope, $stateParams) { …
Run Code Online (Sandbox Code Playgroud)